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

标签 elasticsearch querydsl

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

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

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

最佳答案

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

因此,字段定义如下所示:

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

然后,您可以使用term query执行精确搜索。
{
  "query": {
    "term": {
      "email.keyword": "test@email.com"
    }
  }
}

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

关于elasticsearch - 在Elasticsearch中查询字段的完全匹配的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963095/

相关文章:

elasticsearch - “United States”不是[“United”,“States”]

java - 根据另一列值从总和中减去或添加值

jdbctemplate - 无法在 QueryDslJdbcTemplate 上调用 list() 方法

java - queryDSL 中的 Group concat 等价物

java - 索引@MultiField spring-data-elasticsearch。国际化目的

elasticsearch - ElasticSearch |如何搜索嵌套对象?

sorting - Elasticsearch 通配符查询以获取排序结果

scala - 使用Scala将地理变量传递给Kibana

mysql - 排序和分页

elasticsearch - Elasticsearch发布聚合字符串过滤器