Как использовать query_string (синтаксис Lucene) с Elasticsearch DSL в Python? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу использовать поиск query_string (синтаксис Lucene) с Elasticsearch DSL для Python. К сожалению, первая строка работает не так просто, как вторая:

s = Search(using=client, index='abc').query("query_string", doctext=searchstr).highlight('doctext', fragment_size=200)
s = Search(using=client, index='abc').query("match", doctext=searchstr).highlight('doctext', fragment_size=200)

Какую функцию из библиотеки Elasticsearch DSL можно использовать для query_string?

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете использовать query_string, но вам нужно использовать правильные параметры, определенные в документации :

s = Search(using=client, index='abc')
s = s.query("query_string", query=searchstr, default_field="doctext") # note the query here
s = s.highlight('doctext', fragment_size=200)

Также обратите внимание, что использование query_string для ввода, предоставленного пользователями, может быть опасным, поскольку нет способа ограничить действия пользователей в запросе, и они могут потенциально запрашивать любое поле или создать очень дорогой запрос, который будет дорогое исполнение.

Надеюсь, это поможет!

...