Я использую Nest
для подключения к ElasticSearch и выполнения некоторых запросов. До сих пор я был в состоянии получить результаты, я прошу данный одного запрос по шаблону, как показано ниже:Как найти несколько условий в ElasticSearch
var searchResults = _client.Search<MyIndexable>(
body =>
body
.Index("someIndex")
.Query(
query =>
query.QueryString(
qs => qs.
OnFields(f => f.Title, f => f.Description)
.Query(searchTerm + "*"))));
Но теперь мне нужно добавить дополнительные условия на мой запрос в течение определенного USECASE.
Что мне нужно не только запрос по
[searchTerm]*
, но и два другие поля соответствия:
- SEARCHTERM + "*"
- field1 = "некоторая строка"
- field2 = " некоторые Руководящие принципы "
Я уверен, что должен быть способ сделать это в эластичном поиске (используя Nest
), но я не смог его найти.
Я знаю, что я могу добавить два дополнительных поля в индекс (как в someIndex_field1_field2
), и это определенно вариант для меня, так как field1 и field2 являются достойными разделами (и на самом деле это может быть намного лучший вариант, позволяющий лучшее разбиение), но я просто хотел посмотреть, есть ли способ избежать этого и вместо этого, если бы можно было добавить несколько условий для запроса.
Кто-нибудь знает, как этого достичь?
Большое спасибо,
спасибо. Я попробую это позже сегодня вечером, когда я вернусь домой. Один вопрос: лучше ли (с точки зрения устойчивости, производительности и т. Д.) Это делать, сопоставляя все поля или лучше использовать другой индекс для каждой комбинации поля 1 field +, если комбинация имеет конечное подмножество (скажем, 30 различных комбинаций), а затем вместо этого следует сопоставление на составном индексе? – kha