elasticsearch - ELASTICSEARCH-列出json的字段和唯一值列出json的字段和唯一值

标签 elasticsearch

我正在寻找获取字段唯一值的方法。在这种情况下,我不希望它从聚合计数器返回唯一值,而是唯一字段和值。

JSON:

     "name" : james,
      "city" : "chicago"
    },
    {
      "name" : james,
      "city" : "san francisco"
    },
    {
      "name" : james,
      "city" : "chicago"
    },
     {
      "name" : Mike,
      "city" : "chicago"
    },
     {
      "name" : Mike,
      "city" : "texas"
    },
     {
      "name" : Mike,
      "city" : "texas"
    },
     {
      "name" : Peter,
      "city" : "chicago"
    },
输出:
 "name" : james,
  "city" : "chicago"
},
{
  "name" : james,
  "city" : "san francisco"
},
 {
  "name" : Mike,
  "city" : "chicago"
},
 {
  "name" : Mike,
  "city" : "texas"
},
 {
  "name" : Peter,
  "city" : "chicago"
},

最佳答案

为此,您可以利用scripting。例如,以下查询将完全返回所有唯一组合:

{
  "size": 0,
  "aggs": {
    "unique": {
      "terms": {
        "script": {
          "source": "[doc.name.value ?: 'no_name', doc.city.value ?: 'no_city'].join('-')"
        }
      }
    }
  }
}
请注意,如果这只是一次一次性查询以获取一些见解,那是可以的,但是如果没有,那么最好有另一个包含两个值的字段,并且可以在其上运行常规的terms聚合。

关于elasticsearch - ELASTICSEARCH-列出json的字段和唯一值列出json的字段和唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63482668/

相关文章:

elasticsearch - Elasticsearch Nest和CopyTo

rest - 进行 REST 查询的问题,elasticsearch

elasticsearch - 按 key 长度过滤 "terms aggregation"

elasticsearch - elastic-serach —如何执行通配符kibana查询

python - Python Agent如何使用ElasticAPM跟踪各种计数器/值随时间的演变?

elasticsearch - Elasticsearch 未生成Geohash

scala - 嵌入式ES实例在运​​行单元测试时失败

php - PHP Elasticsearch与查询参数

javascript - 通过对 Elasticsearch 中的索引进行优先级排序来查询多个索引?

mysql - Logstash 输入 MySQL