Поиск с использованием массива строк Dynami c в определенном поле в Elasti c Search NEST Client 6.X - PullRequest
0 голосов
/ 26 мая 2020

Я использую Elasti c Search 6.5.4 и клиент NEST версии 6. У меня есть массив строк для поиска с полем в индексе. Я попытался использовать запрос терминов, и он выглядит следующим образом.

Example 

dynamicOrganizationList = [ "org1","org2" ]. 
And in my Index I have different organization values for different records. Like for Document 1, I have org1 as Organization.<b For 2nd document, I have org2 as an organization and for 3rd document  have org3 as organization

{
   {
       id:"doc1",
       Organization:"org1"
   }
   {
       id:"doc2",
       Organization:"org2"
   }
   {
       id:"doc3",
       Organization:"org3"
   }
}

Теперь мне нужны записи с идентификаторами организаций org1 or org2.

Это тот запрос, который я использовал

.Query(q => q.Terms(b => b.Name("metrics_query").Boost(1.1).Field(f => f.Organization).Terms(dynamicOrganizationList))

Заранее спасибо.

1 Ответ

1 голос
/ 26 мая 2020

Запрос термина или условий не анализирует вводимый текст, т.е. вводимый текст не разделяется на токены с помощью стандартного анализатора

ex "организация" текст типа поля "организация": ["ab c"] is хранится как ["a", "b", "c"] (3 отдельных токена). Таким образом, ваш запрос пытается сопоставить «ab c» либо «a», либо «b», либо «c».

Вам необходимо выполнить поиск по полю ключевого слова (текст хранится как есть ). По умолчанию все текстовые поля имеют подполе с именем keyword типа "ключевое слово".

Используйте .Field (f => f.Organization.Suffix ("keyword")) вместо .Поле (f => f.Организация)

...