从elasticsearch获取唯一值

时间:2016-02-23 14:19:23

标签: elasticsearch

我正在尝试使用此dsl查询从elasticsearch获取唯一值

{
  "aggs": {
    "distinct": {
      "terms": {
        "field": "model",
        "size": 0
      }
    }
  }
}

问题在于,如果我有两个模型,即moto ghtc one,我会得到四个结果,motoghtcone。如何配置它以返回两个结果?

1 个答案:

答案 0 :(得分:2)

您需要修改model字段的映射以添加not_analyzed子字段,而是在该子字段上运行聚合,如下所示:

curl -XPUT localhost:9200/your_index/_mapping/your_type -d '{
  "properties": {
    "model": {
      "type": "string",
      "fields": {                      <-- add this section
        "raw": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}'

更新映射后,您需要重新编制数据索引,然后您就可以像这样运行聚合:

{
  "aggs": {
    "distinct": {
      "terms": {
        "field": "model.raw",          <--- use the new sub-field
        "size": 0
      }
    }
  }
}