我有一些数据可以与elasticsearch 1.5.2汇总,当我在city
这样的字段上进行字词聚合时,这些存储桶不会匹配字段中的完整字符串。例如,如果城市是圣路易斯,则一个桶为St.
,另一个为Louis
。有谁知道如何确保它聚合后进入St. Louis
桶?
注意:这可能是由于正在分析的数据造成的,我非常肯定在比较和搜索等时会破坏字符串。
答案 0 :(得分:2)
你是对的。因此,您只需使用此映射将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
部分声明多个-field):
{
"your_type" : {
"properties" : {
"city" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}