我正在使用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))
先谢谢你了。
术语或术语查询不能分析输入文本,即输入文本没有使用标准分析器分割成标记。
例如 "组织 "字段类型为文本 "组织":["a b c"]被存储为["a", "b", "c"](3个独立的标记)。所以你的查询是想用 "a "或 "b "或 "c "来匹配 "a b c"。
你需要在关键字字段上进行搜索(文本是按原样存储的)。默认情况下,所有的文本字段都有一个名为关键字的子字段,类型为 "关键字"。
使用 .Field(f => f.Organization.Suffix("keyword")) 而不是 .Field(f => f.Organization)