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

elasticsearch中的大布尔问题

余靖
2023-03-14

Elasticsearch maxClauseCount默认设置为1024。我尝试将其设置为4096,配置看起来没问题:

我请求http://myserver:9200/my_index/_settings并获取:

<代码>...“query”:{“bool”:{“max_clause_count”:“4096”}}...,但是如果我尝试的话,仍然在我的日志中获取ToomanyCustions[maxClauseCount设置为1024]

一般来说,我建议重写该查询以使用术语筛选器,而不是布尔查询https://discuss.elastic.co/t/too-many-clauses-maxclausecount-is-set-to-1024/61968

第二个问题:我如何使用过滤器来获得与我的示例中的倍数shoul bool相同的逻辑?在这种情况下,什么是最好的布尔过滤器或过滤过滤器?

共有1个答案

唐恺
2023-03-14

我还不确定Elasticsearch为什么会引发maxClauseCount错误,但我找到了一种构造查询结构的替代方法。

(简单的)解决方案是在项目的大列表中使用术语。如果我将它用于must中,我会得到同样的错误,但是使用filter,它可以很好地工作。

示例:

{
  "query": {
    "bool": {
      "filter": [
        {"terms": {"my_field": ["item1", "item2", ... "itemN"]}}
      ]
    }
  }
}
 类似资料:
  • 我在这里遵循指南https://dzone.com/articles/23-usplient-ellasticsearch-example-queries,下面的bool查询让我感到困惑: 根据教程,查询的解释是: 搜索标题中有“ellasticsearch”或“solr”字样的书,由“Clinton Gormley”撰写,但不由“Radu Gheorge”撰写 我的问题是,bool查询中有3个条

  • 我使用bool查询的必须和must_not功能。它像预期的那样工作,直到我得到一个3级深的属性。 工作正常并返回结果,但如果我在bool查询中执行相同的操作,如。。 不返回任何结果。这是为什么?????记住其他bool查询,例如。。 干得很好!它只适用于任何3级深的字段,因此搜索任何1级深的术语。建议3。建议3

  • 我在ES中有两个问题。对于同一组文档,两者的周转时间都不同。两者在概念上都在做同样的事情。我没有什么疑问 1-这两者之间有什么区别?2-哪个更好使用?3-如果两者相同,为什么表现不同? 映射: 更新1: 我在同一组数据上尝试了bool/必须查询和bool/过滤器查询,但我发现了奇怪的行为 1-bool/必须查询能够搜索所需的文档 2-虽然bool/filter无法搜索文档。如果我删除第二个字段条件

  • 问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)

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

  • 我试图编写一个由2个部分组成的弹性搜索布尔查询。我想要“必须”的两个条件和“应该”的两个条件。问题是我只想得到“应该”的分数。我尝试了“过滤器”,但没有成功。 你有什么想法吗?