在 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)
我正在使用 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)