【发布时间】:2014-10-29 17:59:24
【问题描述】:
我正在尝试在 ElasticSearch 中进行关键字搜索。我最初使用的是这个:
{
"query": {
"filtered": {
"filter": {
"and": [
{
"fquery": {
"query": {
"query_string": {
"query": "Susan Sloan",
"default_operator": "AND"
}
}
}
}
]
}
}
}
但是,我的客户希望 first_name 和 last_name 字段中的匹配项优先于其他字段中的匹配项,例如家庭成员;他们不喜欢 Name = "John Smith" 和 Spouse = "Susan Sloan" 在 Name = "Susan Sloan" 之前显示的结果。因此,我尝试将其更改为对 first_name 和 last_name 字段具有最大提升的多重匹配查询。
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"multi_match": {
"fields": [
"first_name^9",
"last_name^9",
"collection.name^7",
"collection.category.name^7",
"record_type.name^7",
"location.city.name^7",
"location.region.name^7",
"location.country.name^7",
"location.country.name^7",
"relationships.first_name^7",
"relationships.last_name^7",
"attributes.name^1",
"original_text^1"
],
"query": "Susan Sloan",
"operator": "AND",
"type": "cross_fields"
}
}
]
}
}
}
}
}
但是,提升似乎没有任何作用。尽管我有 first_name = "Susan" 和 last_name = "Sloan" 的记录,但我得到的第一个结果是“Abel Conant”,“Susan”和“Sloan”出现在 original_text 字段中。
【问题讨论】:
标签: elasticsearch field match keyword