当前位置: 首页 > 知识库问答 >
问题:

聚合中的弹性搜索排序不起作用

颜志业
2023-03-14

我正在使用聚合来根据其他字段的总和对一个字段进行分组。

它正在工作,但输出与我从数据库查询得到的结果不相似。

ES查询:

{
    "from": 0,
    "size": 0
,
    "aggs": {"domain_agg": {
            "terms": {
                "field": "domain_name.keyword"
            },
            "aggs": {
                "domain_store_count_sum": {
                    "sum": {
                        "field": "store_count"
                    }
                },
                "domain_store_count_agg": {
                    "bucket_sort": {
                        "sort": [
                            {
                                "domain_store_count_sum": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "size": 5
                    }
                }
            }
        }

    },
    "query": {
        "query_string": {
            "query": "(*:*) "
        }
    }
}

输出:

"domain_agg":{"doc_count_error_upper_bound": 9,"sum_other_doc_count": 1442,"存储桶": [ { "key":"doc_count","doc_count": 2,"domain_store_count_sum":{"value": 11258 } }, { "key":"domain_store_count_sum","doc_count": 3,"domain_store_count_sum":{"value": 6795 } }, { "key":"doc_count","doc_count": 2,"domain_store_count_sum":{"value": 3678 } }, { "key":"domain_store_count_sum","advanceautoparts.com": 2,"tesla.com":{"value": 566 } }, { "key":"ajg.com","aldi.us": 2,"alamo.com":{"value": 440 } } ] }

但当我在数据库中运行相同的程序时,得到了不同的输出。

数据库查询:

SELECT domain_name, SUM(store_count) AS store_count
FROM table
GROUP BY domain_name order by store_count desc

输出:

'subway.com','57384'
'bmoharris.com','56876'
'peets.com','37472'
'citibank.com','32348'
'shell.us','23016'

为什么我在elasticsearch中得到不同的结果,而两者都有相同的数据。

共有1个答案

宋智明
2023-03-14

您不必在主agg中精确映射:

"field": "domain_name.keyword" => "field": "domain_name"

您应该删除查询部分。

"query": {
        "query_string": {
            "query": "(*:*) "
        }
    }
 类似资料:
  • 我需要在其中一个索引中进行聚合排序分页。 我了解了弹性搜索的内部功能, 我总共有5个分片,它会对各个分片进行排序并获取结果,默认情况下每个分片将返回10条记录。然后再次对50条记录进行排序,它将获取前10条记录,因为默认大小为10。 输出: 聚合结果在名为“聚合”的单独字段中返回。为了在此聚合数据中进行分页,size和from不起作用。 厌倦了做termBuilder.size(500),现在逻辑

  • 我如何对键上的elasticsearch聚合桶进行排序。我有嵌套的聚合,想对我的第二个聚合桶结果进行排序。 就像我有: 我希望我的< code >事件聚集桶在关键< code >印象或< code >页面视图上按desc/asc排序。我如何实现这样的结果集? 这是我的查询 我试过使用_key,但它在桶内排序。我想通过查看所有桶来排序。就像我有一个键。我希望我的桶结果用这个键排序。不在桶内。 我希望

  • Elasticsearch版本:2.3.3 基本上,标题说明了一切。如果二个嵌套聚合下使用reverse_nested,尽管文档似乎通过限定范围(请参阅结果中的最后一个字段),但其后面的聚合不会以某种方式工作。 这里我准备了一个例子——一个文档是一个学生的注册日期和考试历史。 映射: 试验文件: 聚合查询(无实际意义): 结果是: ...您可以在其中看到聚合“newest_exam_date”不起

  • 我是ES新手,正在努力解决嵌套聚合问题。这是我的虚拟数据对象([这是我的数据对象][1][1]:https://i.stack.imgur.com/X7oaM.png). 我只是想把“现代”领域的成本降到最低。 我已经阅读了以下关于我试图解决的问题的帖子。他们都没有帮助我解决问题 -弹性搜索6嵌套查询聚合-https://www.elastic.co/guide/en/elasticsearch/

  • 我试图使用过滤器聚合来支持前端的多选择方面值。 我有颜色和深度滤镜。 滤色器保存值:黑色(5)、蓝色(3)、红色(2) 深度过滤器保持值:70mm(3)、60mm(5)、50mm(3) 当我在滤色器中选择黑色时,所有其他选项(蓝色,红色)都没有响应。 我尝试添加 谢了,Sree。

  • 这是我的示例文档,我在kibana的帮助下为类似文档编制索引。 现在在文件中,“体验”下的关键“品牌”是主集团“公司”的子集团。正如您在文档中看到的,“品牌”可能有类似于“其他”的条目,但由“公司”键分隔。类似的结构可以在文档内部和文档之间出现。我打算根据“品牌”和“公司”来汇总文档。我尝试的查询是- 我得到的错误为- 这是我的文档的映射- 我知道我的经验字段没有嵌套,可能是这个错误的原因。我对e