Python : Elasticsearch 中的通配符查询

Python : wildcard query in Elasticsearch

我想在 Elasticsearch 中使用通配符查询一个字段,但问题是搜索字符串存储在一个变量中,无法静态使用。 预期的查询是:

body={"query": {"wildcard": {"Name": { "value" : "Vi?????" }}}}

编译时搜索字符串“Vi”不可用。它将由用户提供。假设它存储在某个变量 str (= "Vi") 中。我应该如何使用 str 和“?”来制定查询?

您必须在 python 中使用 + 连接。

而且你需要转义双引号。有很多方法可以做到这一点。我更喜欢escaping double quotes as \"

searchWord ="Vi";
query = "{\"query\": {\"wildcard\": {\"Name\": { \"value\" : \"" + searchWord + "?????\" }}}}";
print (query);

searchWord 是您从用户那里收到的东西。我硬编码了它。

query是你需要形成的那个。我就是这样形成的\"" + searchWord + "?????\"

请检查并提供我需要考虑的任何信息。

编辑:

searchWord ="Vi";
x = 2;
query = "{\"query\": {\"wildcard\": {\"Name\": { \"value\" : \"" + "[a-z]{" + str(x) +"}" + searchWord + "?????\" }}}}";
print (query);