2017-10-10 5 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 " 
      } 
     } 
    } 
} 

また、私はこの入力テキストから1文字の同義語と2文字の同義語をすべて特定する必要があります。 私はまた、indices.query.bool.max_clause_count 4096を増やしてみました。 依然として投げつきエラーです。

答えて

0

指定された入力テキストに対して、索引の作成中に指定された最大句数4096以上の句/語句が多すぎます。解決策は、入力テキストを2つ以上のクエリに分割し、これらの結果を組み合わせてうまく動作することです。 2小屋は最大節数を4096と設定して13文字の入力テキストでうまく動作します。