当查询文本是子字符串时,Elasticsearch完全匹配

时间:2014-08-27 17:34:05

标签: elasticsearch exact-match

我的Elasticsearch中包含数据

PUT /logs/visited_domains/1
{
"visited_domain":"microsoft.com"
}
PUT /logs/visited_domains/2
{
"visited_domain":"not-microsoft.com"
}

映射是:

{
  "properties": {
    "visited_domain": {
      "type": "string",
      "index": "not_analyzed"
    }
  }
}

当我执行

的ElasticSearch时
{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "visited_domain": "microsoft.com"
        }
      }
    }
  }
}

我会得到两个结果。但我只想要完全匹配。关于如何改变查询或改进映射的任何想法?

编辑:我将我的一个示例从notmicrosoft.com更改为not-microsoft.com,因为此破折号导致了很多麻烦。在搜索notmicrosoft.com时,not-microsoft.com不会返回,但microsoft.com会返回。

1 个答案:

答案 0 :(得分:2)

使用query_string,当与引号

一起使用时,它给出完全匹配
 "query": {
     "query_string": {
          "default_field": "visited_domain",
                "query": "\"microsoft.com\""
                }
  }