我有一个计算文档标签并将其编入Elasticsearch的系统,以后服务器会根据这些标签搜索这些文档。现在我的问题是我想为每个标签添加我自己的排名/权重,然后根据我设置的排名/权重搜索并获得这些文档的分数。
假设我有一些类似下面文档的文档,我如何搜索并考虑每个特定标记值的my_rank字段(在此示例中为user.first = Jhon)?
示例文件:
[
{
"_index": "ehud_test_nested",
"_type": "my_type",
"_id": "2",
"_score": 1,
"_source": {
"group": "tags",
"user": [
{
"first": "John",
"my_rank": 100
},
{
"first": "Alice",
"my_rank": 1
},
{
"first": "bob",
"my_rank": 3
}
]
}
},
{
"_index": "ehud_test_nested",
"_type": "my_type",
"_id": "1",
"_score": 1,
"_source": {
"group": "tags",
"user": [
{
"first": "John",
"my_rank": 1
},
{
"first": "Alice",
"my_rank": 10
},
{
"first": "bob",
"my_rank": 30
}
]
}
}
]
答案 0 :(得分:0)
找到它。
示例查询:
{
"query": {
"nested": {
"path": "user",
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"match": {
"user.first": "John"
}
},
{
"match": {
"high.tag": "Alice"
}
}
]
}
},
"boost": "1",
"functions": [
{
"field_value_factor": {
"field": "user.my_rank",
"factor": 1,
"modifier": "none",
"missing": 1
}
}
]
}
}
}
}
}