通配符查询在Elastic Search服务器上无法正常工作

时间:2018-08-22 11:48:27

标签: elasticsearch logstash

如果我搜索包含状态码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
                    }
                }
            }
        }
    }
}

1 个答案:

答案 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
    }
}
相关问题