2017-10-10 74 views
0

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

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

回答

0

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