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

Pau*_*aul 0 elasticsearch

我当前的聚合查询:

{
   "size": 0,
   "query": {
      "match_all": {}
   },
   "aggregations": {
      "publication_type": {
         "terms": {
            "field": "publication_type.name"
         }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Kum*_*ash 5

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

例:

"name" : {"type" : "string", "index" : "not_analyzed"}
Run Code Online (Sandbox Code Playgroud)

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

"name":{
    "type":"string",
    "fields":{
        "name_raw":{
            "type":"string",
            "index" : "not_analyzed"
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

现在您可以在聚合查询中使用"publication_type.name_raw".