在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/