elasticsearch - ElasticSearch:字段键上的聚合

标签 elasticsearch kibana

我正在尝试在Kibana中创建一个与我网站上最受欢迎页面相关的小型仪表板。文档以以下格式存储:

{
    "ev": "pageview",
    "meta": {
      "visitor": "blah",
      "pages": {
        "/my-route": {
          "title": "My route",
          "desc": "foo bar"
        },
        "/my-route#2": {
          "title": "My route 2"
          "desc": "foo bar"
        },
      }
    }
}

因此,我正在尝试创建一个显示以下内容的表:
Page     Views
/foo     10
/foo#2   10
/bar     5

但是,我似乎无法基于对象的键进行聚合。那可能吗?

最佳答案

我认为您的数据结构会给您带来困难的时间。

我建议您将其更改为:

{
    "ev": "pageview",
    "visitor" :"blah",
    "route": "/my-route",
    "title":"My route",
    "desc" foo bar"
}

除了需要的任何其他映射外,还具有用于ev,访客和路线的“关键字”映射类型。

然后,您可以像这样聚合:
GET /{YOUR_INDEX}/_search
{
  "query": {"match_all": {}},
  "aggs": {
    "page_views": {
      "terms": {
        "field": "route",
        "size": 100
      }
    }
  }
}

上述汇总将根据每个基本“路线”值的计数返回前100个计数页面。

如果可能的话,使用您当前的结构进行操作将需要一些非常有趣的脚本。

编辑*我想指出的是,我假设您想按照结构来汇总所有文档。如果您仅基于单个文档的嵌套对象来查找计数,则可能有一种方法。

关于elasticsearch - ElasticSearch:字段键上的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46779273/

相关文章:

elasticsearch - 如何从Logstash修改或添加JSON字段以在ElasticSearch和Kibana中与geo_point一起使用

amazon-web-services - 保护AWS Elasticsearch最佳实践

node.js - 如何使用 eleastic search 2.2.0 初始化 mongoosastic

spring - spring数据elasticsearch继承没有查询结果

elasticsearch - Elasticsearch中@timestamp和timestamp字段之间的差异

regex - Kibana 正则表达式搜索

Python Elasticsearch : BulkIndexError: 'not_x_content_exception' while trying to use helpers. 批量

elasticsearch - Elasticsearch 2.x不适用于Spring Boot 1.2.5

scala - 引起原因:com.fasterxml.jackson.databind.JsonMappingException:不兼容的Jackson版本:2.8.9

ruby - ruby 代码Logstash中的功能