Я создал индекс и некоторые данные на карте и присвоил им тип, используя elasticsearch-grails-plugin
https://grails.org/plugin/elasticsearch через низкоуровневый API, но когда я пытаюсь выполнить поиск с помощью elasticSearchService.search()
и указать в параметрах пакет/тип, я получаю исключение, что тип объекта неизвестен:
java.lang.IllegalArgumentException: Unknown object type: mypackagetype1
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.resolveIndicesAndTypes(ElasticSearchService.groovy:545)
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.search(ElasticSearchService.groovy:438)
at org.grails.plugins.elasticsearch.ElasticSearchService$$EPFkEyq8.search(ElasticSearchService.groovy:64)
Вот как я добавил индекс и данные в package.
def somemypackagetype1data = [name:'Alan', city:'Newyork']
elasticSearchHelper.withElasticSearch { Client client ->
def response = client.prepareIndex("myindex", "mypackagetype1")
.setSource(somemypackagetype1data)
.execute()
.actionGet()
}
и вот как выполняется поиск, который выдает указанное выше исключение:
elasticSearchService.search([types:'mypackagetype1'],
{
query_string(fields: ["name"],
query: searchQuery)
}, null)
Но когда я пытаюсь получить сопоставления с помощью elasticSearchContextHolder.mapping
, он ничего не возвращает. и что интересно, когда я проверяю, существует ли сопоставление с помощью elasticSearchAdminService
, оно возвращается как положительное.
elasticSearchAdminService.mappingExists("myindex", "mypackagetype1")
Почему я получаю неизвестное исключение типа объекта? Хотя я его уже добавил...