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

问题描述 投票:0回答:1

我正在使用Elastic Search 6.5.4和NEST客户端6版本。我有一个字符串数组要在索引中的一个字段中进行搜索。我尝试使用Terms Query,结果如下。

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))

先谢谢你了。

c# elasticsearch nest
1个回答
1
投票

术语或术语查询不能分析输入文本,即输入文本没有使用标准分析器分割成标记。

例如 "组织 "字段类型为文本 "组织":["a b c"]被存储为["a", "b", "c"](3个独立的标记)。所以你的查询是想用 "a "或 "b "或 "c "来匹配 "a b c"。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.