如何根据 ElasticSearch 中的条件提升字段
How to Boost a field based on condition in ElasticSearch
我的查询结构类似于
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match_phrase": {
"user_agencies": "Census"
}
},
{
"match_phrase": {
"user_agencies": "MDA"
}
},
{
"match_phrase": {
"user_agencies": "OSD"
}
}
]
}
},
"size": 500,
"from": 0
}
假设这将 return 一个包含 10 个用户的列表。
我需要得到的是,具有 Agency: 'Census' 的用户成为搜索结果中的第一个(提升以 Census 作为代理的结果) .我们该怎么做?
下面会做的。我将一些 match_phrase
查询转换为 match
查询,因为它们只包含单个术语
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match": {
"user_agencies": {
"query": "Census",
"boost": 3
}
}
},
{
"match": {
"user_agencies": {
"query": "MDA",
}
},
{
"match": {
"user_agencies": {
"query": "OSD",
}
}
]
}
},
"size": 500,
"from": 0
}
你应该提升 at query time,并在代理字段中用 "Census" 大大提升文档。如果提升足够高,匹配 "Census" 的文档将始终位于最前面,而不管其他字段的值如何。
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match_phrase": {
"user_agencies": "Census", "boost": 10
}
},
{
"match_phrase": {
"user_agencies": "MDA"
}
},
{
"match_phrase": {
"user_agencies": "OSD"
}
}
]
}
},
"size": 500,
"from": 0
}
我的查询结构类似于
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match_phrase": {
"user_agencies": "Census"
}
},
{
"match_phrase": {
"user_agencies": "MDA"
}
},
{
"match_phrase": {
"user_agencies": "OSD"
}
}
]
}
},
"size": 500,
"from": 0
}
假设这将 return 一个包含 10 个用户的列表。
我需要得到的是,具有 Agency: 'Census' 的用户成为搜索结果中的第一个(提升以 Census 作为代理的结果) .我们该怎么做?
下面会做的。我将一些 match_phrase
查询转换为 match
查询,因为它们只包含单个术语
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match": {
"user_agencies": {
"query": "Census",
"boost": 3
}
}
},
{
"match": {
"user_agencies": {
"query": "MDA",
}
},
{
"match": {
"user_agencies": {
"query": "OSD",
}
}
]
}
},
"size": 500,
"from": 0
}
你应该提升 at query time,并在代理字段中用 "Census" 大大提升文档。如果提升足够高,匹配 "Census" 的文档将始终位于最前面,而不管其他字段的值如何。
{
"sort": {},
"query": {
"bool": {
"should": [
{
"match_phrase": {
"user_categories": "Grant Writing"
}
},
{
"match_phrase": {
"user_agencies": "Census", "boost": 10
}
},
{
"match_phrase": {
"user_agencies": "MDA"
}
},
{
"match_phrase": {
"user_agencies": "OSD"
}
}
]
}
},
"size": 500,
"from": 0
}