弹性搜索字符串过滤器-是否存在这样的选项?

时间:2018-12-04 11:11:03

标签: elasticsearch error-handling query-string

我想知道,是否有像字符串过滤器这样的选项?

我最近遇到了以下错误:

  

RequestError(400,'search_phase_execution_exception',   'too_many_clauses:maxClauseCount设置为1024')

根据Lucene的文档,它说:

使用过滤器替换查询中导致异常的部分。

您有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Lucene常见问题解答中提到了一些克服TooManyClauses异常的方法,该方法不适用于Elasticsearch,因为它们以前曾经分别拥有terms filter,但是现在它的术语查询本身。

下面是示例如何在过滤器上下文中使用术语的示例:

{
  "query": { 
    "bool": { 

      "filter": [ 
        { "term":   { "user" : ["kimchy", "elasticsearch"]}, 

      ]
    }
  }
}

如果您确实需要使用查询而不是过滤器,则可以更新 集群每个节点的elasticsearch.yml文件中的indices.query.bool.max_clause_count: n(将n替换为所需的子句计数),然后重新启动集群。

  

请注意,这将增加   扩展到多个术语的搜索的内存需求。