【发布时间】:2021-04-04 09:51:43
【问题描述】:
我在 ElasticSearch 中尝试了这些类型的查询,并想知道哪种类型最合适(最准确和最有效)。基本上,一个人可以有多个名称(数组)。姓名分为名、姓和中间名。有些人可以只有名字和姓氏。参数(输入)是全名(名字、姓氏和中间名在一个字符串中的组合)。添加了模糊逻辑。我注意到的一个区别是分数。
这是返回的第一个结果的分数。
- 第一次查询:17.41911
- 第二次查询:24.332222
- 第三次查询:21.200104
这是否意味着第二个查询是该要求最准确的查询?
GET /person/_search
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "David Bill Gonzalo~",
"fields": [
"nameDetails.name.nameValue.firstName",
"nameDetails.name.nameValue.surname",
"nameDetails.name.nameValue.middleName"
]
}
}
]
}
}
}
GET /person/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"nameDetails.name.nameValue.firstName": "David Bill Gonzalo~"
}
},
{
"match": {
"nameDetails.name.nameValue.surname": "David Bill Gonzalo~"
}
},
{
"match": {
"nameDetails.name.nameValue.middleName": "David Bill Gonzalo~"
}
}
]
}
}
}
GET /person/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"fields": [
"nameDetails.name.nameValue.firstName",
"nameDetails.name.nameValue.surname",
"nameDetails.name.nameValue.middleName"
],
"query": "David Bill Gonzalo~"
}
}
]
}
}
}
【问题讨论】:
标签: elasticsearch