我试图查询elasticsearch以检索在其文档中获得关键字#test
的某些文档。 all_hateful_ids
是一个id列表。当我将此查询发送到elasticsearch时,我收到了以下错误。
query = {
"size": 100,
"_source": "text",
"query": {
"function_score": {
"query": {
"bool": {
"filter": [
{"terms": {"id_tweet_creator": all_hateful_ids}}
],
"should": [
{"match": {
"text": "#test"
}}
],
"must_not": [
{"exists": {"field": "retweeted_status"}}
]
}
},
"functions": [
{
"random_score": {}
}
]
}
}
}
elasticsearch.exceptions.TransportError: TransportError(500, 'search_phase_execution_exception', 'java.util.concurrent.ExecutionException: CircuitBreakingException[[fielddata] Data too large, data for [_uid] would be larger than limit of [1267571097/1.1gb]]')
问题是,如果我删除过滤器密钥,那么我的查询就会得到解答。为什么?过滤器应该减少数据量,所以没有办法比我的elasticsearch没有足够的内存来处理没有过滤器字段但是过滤器存在内存问题。我怎么解决这个问题?