【问题标题】:prevent BooleanQuery$TooManyClauses error elasticsearch防止 BooleanQuery$TooManyClauses 错误 elasticsearch
【发布时间】:2018-01-18 18:14:01
【问题描述】:

以下是我的索引设置。我正在为字段同义词的 xyz 类型索引使用 shingle 过滤器。

{
  "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 异常。

{
     "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。 但是仍然是它的抛出错误。

【问题讨论】:

    标签: elasticsearch-5


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2011-06-16
      相关资源
      最近更新 更多