Python Elasticsearch: как обрабатывать очень длинные строки запроса - PullRequest
1 голос
/ 30 октября 2019

Рассмотрим следующий пример:

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).

Каков хороший способ обработки очень больших строк запроса в интерфейсе Python Elasticsearch?

1 Ответ

0 голосов
/ 30 октября 2019

Lucene имеет ограничение логического условия в 1024.

Вы должны изменить значение indices.query.bool.max_clause_count.

Но вы действительно уверены, что должны сделать такой запрос? Может быть лучше использовать массив или текст для примера и сопоставить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...