elasticsearch - 全数组的 Elasticsearch 聚合
问题描述
我如何通过文档中的所有数组项而不是数组的每个值来聚合。例如我有几个文件,像这样
{'some_field': [1,2]}
{'some_field': [1]}
{'some_field': [1]}
{'some_field': [7,2]}
现在有了这样的简单聚合查询
{
"aggs" : {
"agg_name" : {
"terms" : {
"field" : "some_field"
}
}
},
"size": 0
}
我得到了这样的结果
"buckets": [
{
"key": "1",
"doc_count": 3
},
{
"key": "2",
"doc_count": 2
},
...
]
但我想获得完整的数组视图,像这样
"buckets": [
{
"key": [1],
"doc_count": 2
},
{
"key": [1,2],
"doc_count": 1
},
{
"key": [7,2],
"doc_count": 1
},
]
解决方案
我一直在寻找相同的聚合,但仍然不存在。所以用一个无痛的脚本修复
POST some_index/_search
{
"size": 0,
"aggs": {
"myaggs": {
"terms": {
"size": 100,
"script": {
"lang": "painless",
"source": """
def myString = "";
for (int i = 0; i < doc['data. some_field.keyword'].length; ++i) {
myString += doc['data. some_field.keyword'][i] + ", ";
}
return myString;
"""
}
}
}
}
}
推荐阅读
- python - 在同一目录的几个连续文本文件中删除列,python
- javascript - 如何在 JavaScript SignalR 客户端中取消注册 onclose 事件处理程序
- c++ - QQuickImageProvider::requestImage 图片缩放,如何处理
- ssl - 如何使用 Pharo 获取 Twitter 提要?
- mongodb - 从对象的mongodb数组中删除一个对象
- android - 为什么searchview导致应用程序在android studio中崩溃?
- vue.js - ReferenceError: windowTopScroll is not defined, when running tests with jest
- macos - 通过 ffmpeg 使用单播 RTSP URI
- hash - Securely sharing data with BigQuery/ Hashing
- java - What design pattern is implemented by the PreparedStatementSetter from Spring JDBC?