【发布时间】:2019-07-10 03:37:29
【问题描述】:
在 elasticsearch 中查询字段的确切值的最佳方法是什么?比如说我有:
profile: {
email: "test@email.com"
}
如何检查个人资料中是否有完全相同的test@email.com 电子邮件?
【问题讨论】:
在 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 会导致区分大小写的精确搜索。
【讨论】: