在Elasticsearch中查询字段的完全匹配的最佳实践是什么?

时间:2019-07-10 03:37:29

标签: elasticsearch querydsl

在Elasticsearch中查询字段的确切值的最佳方法是什么?例如,我有:

profile: {
     email: "test@email.com"
}

如何查看个人资料中是否有完全相同的test@email.com电子邮件?

1 个答案:

答案 0 :(得分:1)

无论何时需要精确搜索,都可以将该字段的数据类型定义为keyword。如果您需要在同一字段上同时进行部分搜索(分析)和精确搜索,则可以为该字段定义一个子字段,并在需要精确搜索时引用该子字段。

因此字段定义如下:

{
  "query": {
    "term": {
      "email.keyword": "test@email.com"
    }
  }
}

然后您可以使用term query进行精确搜索。

keyword

注意:将类型定义为xy_coords会导致区分大小写的精确搜索。