如何获得与总字符串匹配的术语聚合?

时间:2015-09-01 12:21:46

标签: elasticsearch aggregation

我有一些数据可以与elasticsearch 1.5.2汇总,当我在city这样的字段上进行字词聚合时,这些存储桶不会匹配字段中的完整字符串。例如,如果城市是圣路易斯,则一个桶为St.,另一个为Louis。有谁知道如何确保它聚合后进入St. Louis桶?

注意:这可能是由于正在分析的数据造成的,我非常肯定在比较和搜索等时会破坏字符串。

1 个答案:

答案 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上运行您的汇总,这将被分析并分解将内容分成几个标记(即stlouis)。

如果您事先知道,您永远不会需要分析字段,您可以像这样存储not_analyzed字段(即不需要fields部分声明多个-field):

{
  "your_type" : {
    "properties" : {
      "city" : {
        "type" : "string",
        "index" : "not_analyzed"
      }
    }
  }
}