我正在尝试为 Elasticsearch 的某些结果增加权重。
我目前仅过滤“活动”布尔值以仅获取已发布的项目:
query: {
filtered: {
query: {
match: {
_all: params[:q]
}
},
filter: {
term: {
active: true
}
}
},
}
我现在想给我的一些模型增加重量。例如,市场应该获得 +2 提升。我正在尝试这样的事情:(search_type 是我结果中的一个字段,它基本上是 Rails 模型名称)
POST _search
{
"query": {
"function_score": {
"query": {
"match": {
"_all": "hospitality"
}
},
"functions": [
{
"filter": {
"term": {
"active": true
}
}
},
{
"filter": {
"term": {
"search_type": "Market"
}
},
"weight": 2
}
]
}
}
}
但是,这似乎不起作用:“函数列表中的一个条目缺少一个函数”。所以我添加"weight": 1
到有源过滤器中。但现在它说它无法解析。
我没有使用 ElasticSearch 的经验,文档也很混乱。我也尝试过使用一个custom_filters_score
东西,但这似乎不适用于我的 ES 版本(如此处所述:http: //jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/)。我尝试的另一个选项是将布尔查询与 must 和 should 结合起来,但返回的结果为零......
不知道如何进行。一些见解会很棒。