【问题标题】:What is the best practice to query exact match of a field in elasticsearch?在elasticsearch中查询字段完全匹配的最佳实践是什么?
【发布时间】:2019-07-10 03:37:29
【问题描述】:

在 elasticsearch 中查询字段的确切值的最佳方法是什么?比如说我有:

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

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

【问题讨论】:

    标签: elasticsearch querydsl


    【解决方案1】:

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

    所以字段定义如下:

    "email": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword"
        }
      }
    }
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多