2017-10-10 1 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을 늘려 보았습니다. 여전히 그 던지는 오류가 발생했습니다.

답변

0

주어진 입력 텍스트의 경우 색인을 만드는 동안 제공된 최대 절 수 4096 설정보다 많은 절/용어가 너무 많습니다. 솔루션은 입력 텍스트를 두 개 이상의 쿼리로 분리하고 이들의 결과를 결합하여 잘 작동하는 것입니다. 2 단조가 최대 절 수를 4096으로 설정하여 13 자의 문자 입력 텍스트로 잘 작동합니다.

관련 문제