2017-10-10 64 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.