`OpenSearch.Client` - поиск документов с полем внутри набора значений ⇐ C#
`OpenSearch.Client` - поиск документов с полем внутри набора значений
Я хочу найти документы, в которых поле соответствует любому из значений в наборе, скажем, массиву new int[]{3,7,80}.
Я вижу, что потенциально могу сделать это вот так:
var response = openSearchClient.Search(s => s .Index(имяиндексадокументов) .Query(д => д .Bool(bq => bq .Must(mq => mq.Term("fieldName", 3) || mq.Term("filedName", 7) || mq.Term("filedName", 8)) ) ); Может быть, я мог бы также построить этот запрос в программном цикле.
Но нет ли лучшего способа?
Я вижу, что существует метод .TermSet() (документация здесь), но он, похоже, не дает ожидаемых результатов:
var response = openSearchClient.Search(s => s .Index(имяиндексадокументов) .Query(д => д .Bool(bq => bq .Must(mq =>TermsSet(f => f.Field(d => d.fieldName).Terms(new int[]{3,7,80}))) ) ); Я включил журналирование запросов и вижу, что приведенный выше код генерирует пустые запросы.
Может кто-нибудь сказать мне, как это делается?
Обновление:
Думаю, мне следует включить скрипт для параметра minimum_should_match. Но я попробовал это сейчас, и это не сработало:
mq.TermsSet(f => f.Field(d => d.fieldName).Terms(new int[]{3,7,80}).MinimumShouldMatchScript(sr => sr.Source(" 1")))
Я хочу найти документы, в которых поле соответствует любому из значений в наборе, скажем, массиву new int[]{3,7,80}.
Я вижу, что потенциально могу сделать это вот так:
var response = openSearchClient.Search(s => s .Index(имяиндексадокументов) .Query(д => д .Bool(bq => bq .Must(mq => mq.Term("fieldName", 3) || mq.Term("filedName", 7) || mq.Term("filedName", 8)) ) ); Может быть, я мог бы также построить этот запрос в программном цикле.
Но нет ли лучшего способа?
Я вижу, что существует метод .TermSet() (документация здесь), но он, похоже, не дает ожидаемых результатов:
var response = openSearchClient.Search(s => s .Index(имяиндексадокументов) .Query(д => д .Bool(bq => bq .Must(mq =>TermsSet(f => f.Field(d => d.fieldName).Terms(new int[]{3,7,80}))) ) ); Я включил журналирование запросов и вижу, что приведенный выше код генерирует пустые запросы.
Может кто-нибудь сказать мне, как это делается?
Обновление:
Думаю, мне следует включить скрипт для параметра minimum_should_match. Но я попробовал это сейчас, и это не сработало:
mq.TermsSet(f => f.Field(d => d.fieldName).Terms(new int[]{3,7,80}).MinimumShouldMatchScript(sr => sr.Source(" 1")))
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение