如何从Elasticsearch获取单个字段计数

非斯

我在字典中的内容如下

test=
[ { 'masterid': '1', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Accounting', 'parentname': 'Finance'}, { 'id': '3', 'name': 'Research', 'parentname': 'R & D' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }] }, 

{ 'masterid': '2', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Research', 'parentname': '' }, { 'id': '3', 'name': 'Accounting', 'parentname': '' } ], 'Role': [ { 'id': '5032', 'name': 'Tester' }, { 'id': '5033', 'name': 'Developer' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }]},

 { 'masterid': '3', 'name': 'Group1', 'BusinessArea': [ { 'id': '14', 'name': 'Engineering' }, { 'id': '3', 'name': 'Engineering', 'parentname': '' } ], 'Role': [ { 'id': '5032', 'name': 'Developer' }, { 'id': '5033', 'name': 'Developer', 'parentname': '' } ], 'Designation': [ { 'id': '16', 'name': 'L1' }, { 'id': '20', 'name': 'L2' }, { 'id': '25', 'name': 'L2' }]}]

下面的代码放入弹性搜索索引

from elasticsearch import Elasticsearch
es = Elasticsearch()
es.indices.create(index='new')
for e in test:
        es.index(index="new", body=e, id=e['id'])

我想获得BusinessArea所有名称的masterid计数

在这里AccountingResearch Engineering

 [ {
      "name": "BusinessArea",
      "values": [
        {
          "name": "Accounting",
          "count": "2"
        },
        {
          "name": "Research",
          "count": "2"
        },
    {
          "name": "Engineering",
          "count": "1"
        }]
}]

或者我可以回答如下

{
    "A": {
        "Designation": [{
                "key": "L1",
                "doc_count": 3
            },
            {
                "key": "L2",
                "doc_count": 3
            }
        ]
    },
    {
        "B": {
            "BusinessArea": [{
                    "key": "Accounting",
                    "doc_count": 2
                },
                {
                    "key": "Research",
                    "doc_count": 2
                },
                {
                    "key": "Engineering",
                    "doc_count": 1
                }
            ]
        }
    }
ESCoder

如果要获取该字段的单个计数,则可以使用术语聚合,这是一种基于多桶值源的聚合,其中动态构建存储桶-每个唯一值一个。

搜索查询:

{
  "size":0,
  "aggs": {
    "countNames": {
      "terms": {
        "field": "BusinessArea.name.keyword"
      }
    }
  }
}

搜索结果:

"aggregations": {
    "countNames": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "Accounting",
          "doc_count": 2
        },
        {
          "key": "Research",
          "doc_count": 2
        },
        {
          "key": "Engineering",
          "doc_count": 1
        }
      ]
    }

更新1:

如果您想对该字段Designation以及BusinessArea

搜索查询:

{
  "size": 0,
  "aggs": {
    "countNames": {
      "terms": {
        "field": "BusinessArea.name.keyword"
      }
    },
    "designationNames": {
      "terms": {
        "field": "Designation.name.keyword"
      }
    }
  }
}

搜索结果:

"aggregations": {
    "designationNames": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "L1",
          "doc_count": 3
        },
        {
          "key": "L2",
          "doc_count": 3
        }
      ]
    },
    "countNames": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "Accounting",
          "doc_count": 2
        },
        {
          "key": "Research",
          "doc_count": 2
        },
        {
          "key": "Engineering",
          "doc_count": 1
        }
      ]
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在elasticsearch中同时在嵌套字段中搜索单个对象的两个字段

来自分类Dev

在单个Elasticsearch查询中从父级和子级获取多个字段数据

来自分类Dev

使用Jackson从JSON获取单个字段

来自分类Dev

AngularJS获取单个字段的$原始状态

来自分类Dev

AngularJS获取单个字段的$ pristine状态

来自分类Dev

如何在elasticsearch中为单个字段分配恒定的提升值?

来自分类Dev

Linq - 按多个字段分组并计数(输出单个总数)

来自分类Dev

如何通过Gson解析单个字段

来自分类Dev

如何从行中获取数据并将其放入单个字段?

来自分类Dev

如何使用具有多个ID的单个字段获取价值?

来自分类Dev

如何编写查询以从单个字段中的两个表中获取数据

来自分类Dev

如何在 django rest 框架查询中获取单个字段?

来自分类Dev

如何在mongo的单个查询中获取多个字段的不同值?

来自分类Dev

elasticsearch检索嵌套对象-不是单个字段

来自分类Dev

Elasticsearch查询将多个值匹配到单个字段

来自分类Dev

Elasticsearch:如何查询或汇总多值字段计数

来自分类Dev

如何在Elasticsearch中基于特定字段获取非空值的计数

来自分类Dev

在SQL中使用分组依据获取多个字段的计数

来自分类Dev

使用PDO从数据库获取单个字段的功能

来自分类Dev

单个字段的数组

来自分类Dev

CloudWatch Insights查询-如何从计数中获取单个计数

来自分类Dev

如何同时在两个字段上进行构面以获取组合构面及其计数?

来自分类Dev

ElasticSearch:使用单个查询在单个字段上查询列表中的每个元素

来自分类Dev

在 ElasticSearch 中获取日期直方图中缺少字段的文档计数?

来自分类Dev

Elasticsearch获取最新文档,按多个字段分组

来自分类Dev

ElasticSearch 计数嵌套字段

来自分类Dev

如何从mongoDB中的两个字段进行计数

来自分类Dev

如何使用parsley.js订阅单个字段?

来自分类Dev

如何使用Hibernate Validator验证单个字段?

Related 相关文章

  1. 1

    如何在elasticsearch中同时在嵌套字段中搜索单个对象的两个字段

  2. 2

    在单个Elasticsearch查询中从父级和子级获取多个字段数据

  3. 3

    使用Jackson从JSON获取单个字段

  4. 4

    AngularJS获取单个字段的$原始状态

  5. 5

    AngularJS获取单个字段的$ pristine状态

  6. 6

    如何在elasticsearch中为单个字段分配恒定的提升值?

  7. 7

    Linq - 按多个字段分组并计数(输出单个总数)

  8. 8

    如何通过Gson解析单个字段

  9. 9

    如何从行中获取数据并将其放入单个字段?

  10. 10

    如何使用具有多个ID的单个字段获取价值?

  11. 11

    如何编写查询以从单个字段中的两个表中获取数据

  12. 12

    如何在 django rest 框架查询中获取单个字段?

  13. 13

    如何在mongo的单个查询中获取多个字段的不同值?

  14. 14

    elasticsearch检索嵌套对象-不是单个字段

  15. 15

    Elasticsearch查询将多个值匹配到单个字段

  16. 16

    Elasticsearch:如何查询或汇总多值字段计数

  17. 17

    如何在Elasticsearch中基于特定字段获取非空值的计数

  18. 18

    在SQL中使用分组依据获取多个字段的计数

  19. 19

    使用PDO从数据库获取单个字段的功能

  20. 20

    单个字段的数组

  21. 21

    CloudWatch Insights查询-如何从计数中获取单个计数

  22. 22

    如何同时在两个字段上进行构面以获取组合构面及其计数?

  23. 23

    ElasticSearch:使用单个查询在单个字段上查询列表中的每个元素

  24. 24

    在 ElasticSearch 中获取日期直方图中缺少字段的文档计数?

  25. 25

    Elasticsearch获取最新文档,按多个字段分组

  26. 26

    ElasticSearch 计数嵌套字段

  27. 27

    如何从mongoDB中的两个字段进行计数

  28. 28

    如何使用parsley.js订阅单个字段?

  29. 29

    如何使用Hibernate Validator验证单个字段?

热门标签

归档