我使用ElasticSearch 6.6。我的应用程序通过从不同数据源提取数据来构建ES索引。搜索未指定数据源。它只是建立一个类似的查询:
GET employerdata/_search
{
"query":
{
"bool": {
"must": [
{ "match" : {"name" : {
"query": "WALMART",
"fuzziness": "3"
}}},
{ "match" : {"state" : "TX"}}
]
}
}
}
有一个名为“dataSource”的字段。但是,它不用于构建查询。但是,这是结果的一部分。基本上,我想在构建查询时隐式地使用此字段。例如,如果文档的“dataSource”等于“A”,则文档应位于结果集的顶部。换句话说,我想基于字段“dataSource”提高得分。但是,即使文档是来自其他“数据源”(例如“B”)的索引,我仍然希望获得结果。
最佳答案
要在@ apt-get_install_skill答案之上添加。如果在查询时需要提升而不是建立索引。您可以使用function_score
GET employer/_search
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"match": {
"dataSource": "B"
}
},
"weight": 2
}
]
}
}
}
关于elasticsearch - 基于某些字段的ElasticSearch结果排序(相关分数)(增强),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068321/