Я использую ElasticSearch (2.4) и официальный клиент Python для выполнения простых запросов. Мой код:ElasticSearch query_string не выполняет синтаксический анализ запросов с некоторыми символами
from elasticsearch import Elasticsearch
es_client = Elasticsearch("localhost:9200")
index = "indexName"
doc_type = "docType"
def search(query, search_size):
body = {
"fields": ["title"],
"size": search_size,
"query": {
"query_string": {
"fields": ["file.content"],
"query": query
}
}
}
response = es_client.search(index=index, doc_type=doc_type, body=body)
return response["hits"]["hits"]
search("python", 10) # Works fine.
Проблема заключается в том, что мой запрос содержит несбалансированные скобки или скобки. Например, с search("python {programming", 10)
ES бросает:
elasticsearch.exceptions.RequestError: TransportError(400, u'search_phase_execution_exception', u'Failed to parse query [python {programming}]')
Это ожидаемое поведение ES? Разве он не использует токенизатор для удаления всех этих символов?
Примечание: Это происходит со мной и с использованием Java.