ES-搜索带有特殊字符的完全匹配

时间:2019-09-09 14:00:17

标签: elasticsearch

尝试通过以下查询查询ES:

search_body={
    "query": {
        "bool": {
            "must": [
                {"match": {"origin.mac": "12:34:56:78:90:ab"}}, 
                {"range": {"timestamp": {"gte": "now-90d/d","lte": 
                 "now/d"}}}
            ]
        }
    }
}

此查询返回所有带有任何子字符串的macs(12、34、56 ..例如:mac xx:12:xx:xx:xx:xx:xx也将返回)

我已经尝试将查询从“ match”更改为“ term”,但是该查询没有给出任何结果,即使我100%肯定特定的Mac位于数据库中。

使用以下查询搜索Kibana时,它会返回结果:

 origin.mac: "12:34:56:78:90:ab"

还尝试用这样的另一个撇号进行搜索:

{"term": {"origin.mac": "'12:34:56:78:90:ab"}}, 

但它也不起作用。

1 个答案:

答案 0 :(得分:0)

假设您没有对该字段作为字符串的默认值进行任何映射...

尝试:

search_body={
    "query": {
        "bool": {
            "must": [
                {"match": {"origin.mac.keyword": "12:34:56:78:90:ab"}}, 
                {"range": {"timestamp": {"gte": "now-90d/d","lte": 
                 "now/d"}}}
            ]
        }
    }
}