У меня есть 10+ Индексы на моем Elasticsearch сервере.
Каждый Индекс имеет 1 или более полей с различными типами Анализаторы : ключевое слово , стандарт , нграм и т. Д. *
Для глобального поиска я использую multi_match
без указания явного fields
.
Для запросов я использую библиотеку elasticsearch-dsl
, код ниже:
def search_for_index(indice, term, num_of_result=10):
s = Search(index=indice).sort({"_score": "desc"})
s = s[:num_of_result]
s = s.query('multi_match', query=term, operator='and')
response = s.execute()
return response.to_dict()['hits']['hits']
Я получаю очень хороший результат, и поиск работает просто отлично, но иногда кто-то вводит более длинный текст, и я получаю maxClauseCount
ошибку.
Например, поиск, который выдает ошибку, когда условие поиска term
равно:
term=We are working on your request and will keep you posted at the earliest.
Или любой другой более длинный текст вызывает ту же ошибку.
Можете ли вы помочь мне разобраться, может быть, какой-нибудь лучший подход для моего глобального поиска, чтобы я мог избежать такого рода ошибок?