如何获得术语聚合以匹配总字符串?
How can I get term aggregation to match a total string?
我有一些数据正在使用 elasticsearch 1.5.2 进行聚合,当我在 city
之类的字段上进行术语聚合时,存储桶与该字段中的完整字符串不匹配。例如)如果城市是圣路易斯,那么一个桶将是 St.
,另一个是 Louis
。有谁知道如何确保它在聚合时进入 St. Louis
存储桶?
注意:这可能是由于正在分析的数据造成的,我很确定在比较和搜索等时会分解字符串。
你是对的。因此,您只需使用此映射将 city
字段映射为 not_analyzed
字符串:
{
"your_type" : {
"properties" : {
"city" : {
"type" : "string",
"index" : "analyzed",
"fields" : {
"raw" : {"type" : "string", "index" : "not_analyzed"}
}
}
}
}
}
然后您可以简单地 运行 您在 city.raw
字段(包含未分析的值,即 St. Louis
)而不是 city
上的聚合被分析并将内容分解成几个标记(即 st
和 louis
)。
如果您事先知道,您将永远不需要分析字段,您可以像这样简单地存储 not_analyzed
字段(即不需要 fields
部分声明一个 multi -字段):
{
"your_type" : {
"properties" : {
"city" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}
我有一些数据正在使用 elasticsearch 1.5.2 进行聚合,当我在 city
之类的字段上进行术语聚合时,存储桶与该字段中的完整字符串不匹配。例如)如果城市是圣路易斯,那么一个桶将是 St.
,另一个是 Louis
。有谁知道如何确保它在聚合时进入 St. Louis
存储桶?
注意:这可能是由于正在分析的数据造成的,我很确定在比较和搜索等时会分解字符串。
你是对的。因此,您只需使用此映射将 city
字段映射为 not_analyzed
字符串:
{
"your_type" : {
"properties" : {
"city" : {
"type" : "string",
"index" : "analyzed",
"fields" : {
"raw" : {"type" : "string", "index" : "not_analyzed"}
}
}
}
}
}
然后您可以简单地 运行 您在 city.raw
字段(包含未分析的值,即 St. Louis
)而不是 city
上的聚合被分析并将内容分解成几个标记(即 st
和 louis
)。
如果您事先知道,您将永远不需要分析字段,您可以像这样简单地存储 not_analyzed
字段(即不需要 fields
部分声明一个 multi -字段):
{
"your_type" : {
"properties" : {
"city" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}