【发布时间】:2018-08-22 20:42:05
【问题描述】:
如果我搜索包含状态代码 200 的文档,我会得到预期的结果,但是当我搜索包含 20 的文档时,我什么也得不到!?我认为通配符查询就像 SQL 的“LIKE '%search%'”。这只是一个例子,我对其他(字符串)字段也有同样的问题。
有谁知道我为什么会遇到这个问题以及如何获得我想要的 - SQL 的“LIKE '%search%' 行为?
我搜索的索引是由 Logstash 自动创建的。
这是我发送的查询的一部分:
"wildcard": {
"statusCode": {
"wildcard": "20",
"boost": 1.0
}
}
这是映射的一部分:
"mappings": {
"doc": {
...
"properties": {
...
"statusCode": {
"type": "text",
"norms": false,
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
【问题讨论】:
-
wildcard查询唯一可能的通配符是*或?,您在哪里看到可以使用括号? -
我放了它们,因为我同时发送了 200 和 20。为了清楚起见,我现在将它们删除
-
那么如果你坚持使用
wildcard,你应该指定20*或20?,否则你可以使用prefix查询并简单地指定20。 -
这有帮助,但我有类似的问题,我刚刚在上面描述过。 TY
-
我觉得原问题解决了,更新应该属于新问题了。