下面是我的索引设置。我对字段同义词的xyz类型的索引使用shingle filter。
{
"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仍然是它的抛出错误。
发布于 2018-01-18 18:14:02
对于给定的输入文本,它超过了太多的子句/术语,超过了创建索引时提供的最大子句计数4096设置。解决方案是将输入文本分解为两个或多个查询,然后将这些查询的结果组合在一起就可以了。2 shingle在13个字母的输入文本下工作正常,最大子句数设置为4096。
https://stackoverflow.com/questions/46660542
复制相似问题