使用elasticsearch中的聚合获取完整的术语内容

时间:2014-10-06 08:53:38

标签: elasticsearch

我当前的聚合查询:

{
   "size": 0,
   "query": {
      "match_all": {}
   },
   "aggregations": {
      "publication_type": {
         "terms": {
            "field": "publication_type.name"
         }
      }
   }
}

这将返回三个单独的术语:“年度”,“每周”和“报告”。

实际上,这些只有两个术语:“每周报告”和“年度报告”。

如何让ElasticSearch(使用1.1)返回完整的单词而不是单独的单词?

1 个答案:

答案 0 :(得分:5)

默认情况下,如果未提供显式映射,则会分析所有字段。您必须使用新映射重新索引整个数据。 “名称”字段必须是未分析的,或者您可以添加“关键字”标记生成器。

示例:

"name" : {"type" : "string", "index" : "not_analyzed"}

如果您想要保留已分析的名称字段,您可以进行多字段映射,如下所示。

"name":{
    "type":"string",
    "fields":{
        "name_raw":{
            "type":"string",
            "index" : "not_analyzed"
         }
     }
 }

现在您可以在聚合查询中使用“publication_type.name_raw”。