如果我搜索包含状态码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
}
}
}
}
}
}
答案 0 :(得分:0)
如果坚持使用wildcard
查询,则应指定20*
或20?
...
"wildcard": {
"statusCode": {
"wildcard": "20*",
"boost": 1.0
}
}
或
"wildcard": {
"statusCode": {
"wildcard": "20?",
"boost": 1.0
}
}
...否则,您可以使用prefix
query并只需指定20
"prefix": {
"statusCode": {
"value": "20",
"boost": 1.0
}
}