当前位置: 首页 > 面试题库 >

在Elasticsearch中汇总值数组

凤扬
2023-03-14
问题内容

我需要如下汇总一个数组

两个文档示例:

{
    "_index": "log",
    "_type": "travels",
    "_id": "tnQsGy4lS0K6uT3Hwzzo-g",
    "_score": 1,
    "_source": {
        "state": "saopaulo",
        "date": "2014-10-30T17",
        "traveler": "patrick",
        "registry": "123123",
        "cities": {
            "saopaulo": 1,
            "riodejaneiro": 2,
            "total": 2
        },
        "reasons": [
            "Entrega de encomenda"
        ],
        "from": [
            "CompraRapida"
        ]
    }
},
{
    "_index": "log",
    "_type": "travels",
    "_id": "tnQsGy4lS0K6uT3Hwzzo-g",
    "_score": 1,
    "_source": {
        "state": "saopaulo",
        "date": "2014-10-31T17",
        "traveler": "patrick",
        "registry": "123123",
        "cities": {
            "saopaulo": 1,
            "curitiba": 1,
            "total": 2
        },
        "reasons": [
            "Entrega de encomenda"
        ],
        "from": [
            "CompraRapida"
        ]
    }
},

我想聚集cities阵列,找出所有citiestraveler已经去了。我想要这样的东西:

{
    "traveler":{
        "name":"patrick"
    },
    "cities":{
        "saopaulo":2,
        "riodejaneiro":2,
        "curitiba":1,
        "total":3
    }
}

其中,totalcities数组长度减去1 的长度。我尝试了术语“聚合”和“和”,但无法输出所需的输出。

可以对文档结构进行更改,因此,如果这样对我有所帮助,我将很高兴知道。


问题答案:

在“ 城市 ” 上方发布的文档中,它不是json数组,而是json对象。如果可以更改文档结构,则可以将文档中的城市更改为对象数组

示例文件:

 cities : [
   {
     "name" :"saopaulo"
     "visit_count" :"2",

   },
   {
     "name" :"riodejaneiro"
     "visit_count" :"1",

   }
]

然后,您需要将城市设置为嵌套在索引映射中的类型

   "mappings": {
         "<type_name>": {
            "properties": {
               "cities": {
                  "type": "nested",
                  "properties": {
                     "city": {
                        "type": "string"
                     },
                     "count": {
                        "type": "integer"
                     },
                     "value": {
                        "type": "long"
                     }
                  }
               },
               "date": {
                  "type": "date",
                  "format": "dateOptionalTime"
               },
               "registry": {
                  "type": "string"
               },
               "state": {
                  "type": "string"
               },
               "traveler": {
                  "type": "string"
               }
            }
         }
      }

之后,您可以使用嵌套聚合来获取每个用户的城市计数。查询将在以下几行中显示:

{
   "query": {
      "match": {
         "traveler": "patrick"
      }
   },
   "aggregations": {
      "city_travelled": {
         "nested": {
            "path": "cities"
         },
         "aggs": {
            "citycount": {
               "cardinality": {
                  "field": "cities.city"
               }
            }
         }
      }
   }
}


 类似资料:
  • 问题内容: 我每天要进行几个实验,在Elasticsearch中存储实验的 错误 和 布尔 值(如果结果正确)。现在,我想在图形中显示结果(使用highchart js)。我使用这样的汇总查询来接收每天的汇总错误,包括标准差: 我面临的问题是,我无法像从数据库中获得双重错误一样检索布尔值。当我只是将字段名称更改为 我收到此错误消息: 但是,可以将所有布尔值合计为true,将true设置为1,将fa

  • 本文向大家介绍python中的Elasticsearch操作汇总,包括了python中的Elasticsearch操作汇总的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python中的Elasticsearch操作汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导入包 本地连接 创建索引 ingore=400 ingore是忽略

  • 问题内容: 我每年进行一次嵌套聚合,然后每年在Elasticsearch中进行每周一次嵌套聚合。years年有53周,但是ElasticSearch的结果给出的是year年的最后一周key =“ 1”而不是“ 53”。如何让ElasticSearch在上周返回53而不是1? 这是我的查询: 结果(删除的数据在中间): 2008年是a年,最后一个星期有“ key_as_string”:“ 1”。我希

  • 关于如何利用函数汇总表的数据。 聚集函数 确定表中的行数 获得表中行组的和 找出表列(所有行,特定行)的最大,最小,平均值。 上面的例子需要对表中的数据汇总,而不是实际数据本身,所以可以不需要返回时间数据,浪费资源 聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数。 AVG(): 返回所有列或者某个列平均值。 计算表中的行数并计算特定列值之和,求得改列的平均值

  • 本文向大家介绍如何在MongoDB中汇总总和以获得总数?,包括了如何在MongoDB中汇总总和以获得总数?的使用技巧和注意事项,需要的朋友参考一下 要在MongoDB中汇总总和以获取总计数,可以使用$sum运算符。要了解上述概念,让我们使用文档创建一个集合- 在method的帮助下显示集合中的所有文档。查询如下- 以下是输出- 这是获取总数的查询。 情况1-查询如下- 以下是输出- 这是在Mong

  • 问题内容: 如何在Swift中汇总CGFloat?我已经尝试过了,但是只能在iPad Air和iPhone 5S上使用。 在另一台模拟设备上运行时,出现错误提示 问题答案: 更新 :Apple现在已经定义了一些CGFloat特定版本的常用功能,例如: …专门处理32/64位的差异。如果仅使用CGFloat参数,则它现在应在所有体系结构上都适用。 我的原始答案: 我认为这太可怕了,但是谁能想到更好的