Ограничить поиск определенными доменами

Я использую плагин elasticsearch и выполняю поиск с использованием elasticSearchService.search(myKeywords), который ищет ключевые слова по всем классам домена, отмеченным как searchable.

Теперь я хочу ограничить поиск двумя определенными доменными классами. Я вижу, что есть параметры с именами indices и types, которые можно передать методу поиска, но если я просто использую для них имена классов домена, я получаю ошибки, говорящие о том, что индекс или тип не существует. Что именно я должен сделать, чтобы достичь того, чего я хочу?

(Я новичок в lucene и elasticsearch, и я не уверен, что понял концепции индекса и типа. Читая документы, я смог найти только примеры, ограничивающие поиск определенным полем, а не классом домена дыры или чем-то еще, что он сопоставлен с , в концепциях lucene/elasticsearch).


person Cléssio Mendes    schedule 24.06.2016    source источник
comment
Проверяя elasticSearchAdminService.indices, я вижу один индекс, созданный для каждого из моих доменных классов. Имена выглядят как org.mypackage_v0. Читая документы, я обнаружил, что ожидаемое поведение должно быть одним index для базы данных дыр и что каждый домен (таблица) должен отображаться как type. Как я могу это сделать?   -  person Cléssio Mendes    schedule 24.06.2016


Ответы (1)


Путь таков:

elasticSearchService.search(myKeywords, [types:["myPackage.MyClass","myPackage.MyOtherClass"]])

Результаты соответствуют ожиданиям, но меня все еще беспокоит наличие одного индекса (и одного типа) для каждого домена. Не то, что я ожидал, но я не вижу, как сопоставить все классы домена с одним индексом для базы данных дыр, как указано в документы

person Cléssio Mendes    schedule 24.06.2016
comment
Я понял, что плагин по умолчанию создает индекс для каждого пакета доменов. Чтобы создать единый индекс для приложения, мы должны установить elasticSearch.index.name = 'myIndexName' в Config.groovy. - person Cléssio Mendes; 24.06.2016