我想使用elasticsearch在文档列中搜索子字符串。文档列包含长度正好为255个字符的字符串。在该列中,我希望搜索指定位置内出现的子字符串。例如,我想搜索位于字符串5-7位置的子字符串"ABC“。因此xxxxABCxxxxx..。是一个有效的答案但是xxABCxxxxx..。不是(假设索引从1开始)。
通配符查询可以搜索子字符串,但不能在指定的固定位置搜索。
{
"query": {
"wildcard": {
"String Name": {
"value": "*ABC*"
}
}
}
}如何在python中表达这个查询?
发布于 2020-07-01 03:34:39
你能用regexp过滤器来实现这一点吗?
from elasticsearch import Elasticsearch
es = Elasticsearch(...)
resp = es.search(
index="index-name",
body={
"query": {
"regexp": {
"String Name": {
"value": "^.{4}ABC"
}
}
}
}
)
print(resp)您必须启用search.allow_expensive_queries来启用regexp过滤器的使用。
<披露:我是Python客户端的维护者,并受雇于Elastic>
https://stackoverflow.com/questions/62507506
复制相似问题