在 Elastic Search NEST 客户端的特定字段中使用动态字符串数组进行搜索 6.X

Search with an dynamic array of strings in a particular field in Elastic Search NEST Client 6.X

我正在使用 Elastic 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"
   }
}

现在我需要组织 ID 为 org1 or org2 的记录。

这是我用过的查询

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

提前致谢。

一个或多个术语查询不分析输入文本,即输入文本不使用标准分析器拆分为标记

ex "organization" 字段类型文本 "organization":["a b c"] 存储为 ["a","b","c"](3 个单独的标记)。因此,您的查询试图将 "a b c" 与 "a" 或 "b" 或 "c".

匹配

您需要在关键字字段上进行搜索(文本按原样存储)。默认情况下,所有文本字段都有一个名为关键字的子字段,类型为 "keyword"。

使用 .Field(f => f.Organization.Suffix("keyword")) 而不是 .Field(f => f.Organization)