首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止BooleanQuery$TooManyClause错误elasticsearch

防止BooleanQuery$TooManyClause错误elasticsearch
EN

Stack Overflow用户
提问于 2017-10-10 15:07:18
回答 1查看 180关注 0票数 0

下面是我的索引设置。我对字段同义词的xyz类型的索引使用shingle filter。

代码语言:javascript
复制
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer_keyword": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": [
            "asciifolding",
            "lowercase"
          ]
        },
        "my_analyzer_shingle": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "asciifolding",
            "lowercase",
            "shingle"
          ]
        }
      }
    }
  }
},
abc: {
  "abc": {
    "properties": {
      "value": {
        "type": "string",
        "search_analyzer": "my_analyzer_keyword",
        "analyzer": "my_analyzer_keyword"
      }
    }
  }
},
xyz: {
  "xyz": {
    "properties": {
      "synonym": {
        "type": "string",
        "search_analyzer": "my_analyzer_shingle",
        "analyzer": "my_analyzer_keyword"
      }
    }
  }
}

我有输入的文本,其中没有一个单词可以是30或更多。我的要求是从我提供的这个特定输入文本中获得xyz类型的所有同义词字段。所以我使用了下面的查询,但是它抛出了BooleanQuery$TooManyClauses异常。

代码语言:javascript
复制
{
     "query": {
        "match": {
            "synonym": {
                "query": "abas asas asas qwqw ererer asas asas kjjkkj hhha asas nnn jhhha kkka nnna asas qwqw asas qwqw sdsd qwqw erer rtrtr fgfg asas nnn jhhha kkka nnna asas qwqw asas qwqw sdsd qwqw erer rtrtr fgfg "
            }
        }
    }
}

此外,我需要确定所有的一个字母的同义词,以及从这个输入文本的两个字母的同义词。我还尝试增加了indices.query.bool.max_clause_count 4096。BUt仍然是它的抛出错误。

EN

回答 1

Stack Overflow用户

发布于 2018-01-18 18:14:02

对于给定的输入文本,它超过了太多的子句/术语,超过了创建索引时提供的最大子句计数4096设置。解决方案是将输入文本分解为两个或多个查询,然后将这些查询的结果组合在一起就可以了。2 shingle在13个字母的输入文本下工作正常,最大子句数设置为4096。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46660542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档