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);
我想在 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);