获取唯一句子的值 - ElasticSearch

时间:2016-05-20 11:52:11

标签: elasticsearch

我的索引文档中有一个字段,这是一个句子。我打算在索引中的所有文档中找到唯一句子的值。这个字段是"字符串"现场并进行分析。我尝试了cardinality聚合,但它给了我一些独特的句子,但不是实际的唯一值。我该如何解决这个问题?

这是我的搜索查询

{
   "fields":[
      "incident.name"
   ],
   "aggs":{
      "unique_vuls":{
         "cardinality":{
            "field":"incident.name"
         }
      }
   }
}

1 个答案:

答案 0 :(得分:1)

更新&答:根据@ AndreiStefan的建议,我将该字段重新映射为multi-field并重新索引数据。随后,我查询了incident.name.raw字段,并能够获得索引中的所有唯一句子。

这是映射的片段:

{
   "name":{                          #incident.name field
      "type":"string",
      "index":"analyzed",
      "fields":{
         "raw":{
            "type":"string",
            "index":"not_analyzed"
         }
      }
   }
}

以下是terms聚合搜索查询的摘要:

{
   "aggs":{
      "unique_incidents":{
         "terms":{
            "field":"incident.name.raw"
         }
      }
   }
}