gpt4 book ai didi

Elasticsearch:计算表中的行数

转载 作者:行者123 更新时间:2023-12-02 23:44:17 24 4
gpt4 key购买 nike

我有一张大 table (15000 x 2000 个条目)。在此表中,我需要计算具有某些属性的行,例如“所有行,在第 5 列中具有 1 或 2,在第 6 列中具有 0”。我将这种类型的操作称为计数操作。对于我的用例,计数操作需要非常快,因为我执行了数百个这样的计数操作。
我尝试使用 Elasticsearch 来做到这一点,但性能似乎非常糟糕(比如 180 次计数操作需要 10 秒)。我想知道,如果我以错误的方式构建查询,或者 Elasticsearch 是不是这样做的错误技术?
我的查询都是相同的形式。我用java创建它们,所以很难在这里发布它们的样子,但我会尽力解释
我将每个单独的计数操作构建为 BoolQuery。对于上面的示例,它将是一个看起来与此类似的查询(如果它是错误的,请不要怪我,我无法复制正确的查询,因为它是在 java 中构建的):

  "query": {
"bool" : {
"must" : [
"should" : [
{ "column 5" : "1" },
{ "column 5" : "2" }
],
"should" : [
{ "column 6" : "0" }
],
"minimum_should_match" : 1
],
"boost" : 1.0
}
}
这种形式的许多 bool 查询然后被分组到一个 MultiSearchRequest。我使用“fetchSource = false”选项来防止 Elasticsearch 自己加载实体。
如果您需要任何进一步的信息,或者不清楚,请告诉我,我正在尝试做什么!

最佳答案

我只是自己解决了这个问题。对于所有有类似问题的人,方法如下:
我更改了 SearchSourceBuilder,使其现在使用 ValueCountAggregator。这个计数值并允许我将 SearchSourceBuilder.size() 设置为 0。通过这种方式,我自己摆脱了命中并仅检索聚合值。
之前需要 4 秒的请求现在在不到 100 毫秒内执行。

关于Elasticsearch:计算表中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62559500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com