ElasticSearch - 返回唯一值

标签 elasticsearch

我如何从记录中获取所有语言的值并使它们唯一。

记录

PUT items/1
{ "language" : 10 }

PUT items/2
{ "language" : 11 }

PUT items/3
{ "language" : 10 }

查询

GET items/_search
{ ... }

# => Expected Response
[10, 11]

任何帮助都会很棒。

最佳答案

您可以使用 terms aggregation .

{
"size": 0,
"aggs" : {
    "langs" : {
        "terms" : { "field" : "language",  "size" : 500 }
    }
}}

聚合中的 size 参数指定要包含在聚合结果中的最大项数。如果您需要所有结果,请将此值设置为大于数据中唯一项数的值。

搜索将返回如下内容:

{
"took" : 16,
"timed_out" : false,
"_shards" : {
  "total" : 2,
  "successful" : 2,
  "failed" : 0
},
"hits" : {
"total" : 1000000,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
  "langs" : {
    "buckets" : [ {
      "key" : "10",
      "doc_count" : 244812
    }, {
      "key" : "11",
      "doc_count" : 136794
 
    }, {
      "key" : "12",
      "doc_count" : 32312
       } ]
    }
  }
}

关于ElasticSearch - 返回唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465215/

相关文章:

ElasticSearch - 基于递归结构中的深度提升

elasticsearch - ElasticSearch API之后搜索-索引状态

elasticsearch - 计算elasticsearch中具有唯一*值*的文档的数量

elasticsearch - 带有嵌套AND/OR查询的Elasticsearch

node.js - 带有Node.js的Elasticsearch js:如何从多个索引返回聚合结果?

elasticsearch - ElasticSearch-在现有索引上设置doc_values

docker - 关于docker-compose up时docker容器的退出

java - ElasticSearch - 无法获得节点锁

elasticsearch - 在Elasticsearch中组合查询

json - Filebeat 和 LogStash——多种不同格式的数据