考虑以下示例:
NUMBER_KEYWORDS = 3000
es = Elasticsearch("127.0.0.1",port=9200,timeout=120,index="example_index",http_auth=AUTH)
query = {'query': {"bool": { "should": [{"match": {"value.keyword": v}} for v in ["keyword" for i in range(NUMBER_KEYWORDS)]]}}}
es.search(index="example_index", body=query, size=10000)['hits']['hits']
这失败,并带有以下异常:
RequestError(400, 'search_phase_execution_exception', 'failed to create query: [...]
如果我将NUMBER_KEYWORDS
关键字设置为较小的数字(例如1000),它不会失败。
在Elasticsearch python接口中处理非常大的查询字符串的好方法是什么?
答案 0 :(得分:0)
Lucene的布尔条件限制为1024。
您必须更改index.query.bool.max_clause_count值。
但是,您真的确定必须提出这样的请求吗?最好使用数组或文本作为示例并与之匹配。