为 Elasticsearch 查询添加提升
Adding boost to Elasticsearch query
我正在尝试为 Elasticsearch 的某些结果增加权重。
我目前仅过滤 'active' 布尔值以仅获取已发布的项目:
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
}
]
}
}
}
但是,这似乎不起作用:"One entry in functions list is missing a function"。所以我添加了 "weight": 1
到活动过滤器..但是现在它说它无法解析.
我没有使用 ElasticSearch 的经验,文档也很混乱。我也尝试过使用 custom_filters_score
东西,但这似乎不适用于我的 ES 版本(如此处所述:http://jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/)。我尝试的另一个选择是将布尔查询与 must 和 should 结合起来,但返回零结果...
不确定如何进行。一些见解会很棒。
你应该能够使用 filtered query 和功能分数来实现这个
示例:
{
"query": {
"filtered": {
"query": {
"function_score": {
"query": {
"match": {
"_all": "hospitality"
}
},
"functions": [
{
"filter": {
"term": {
"search_type": "Market"
}
},
"weight": 2
}
]
}
},
"filter": {
"term": {
"active": true
}
}
}
}
}
我正在尝试为 Elasticsearch 的某些结果增加权重。
我目前仅过滤 'active' 布尔值以仅获取已发布的项目:
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
}
]
}
}
}
但是,这似乎不起作用:"One entry in functions list is missing a function"。所以我添加了 "weight": 1
到活动过滤器..但是现在它说它无法解析.
我没有使用 ElasticSearch 的经验,文档也很混乱。我也尝试过使用 custom_filters_score
东西,但这似乎不适用于我的 ES 版本(如此处所述:http://jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/)。我尝试的另一个选择是将布尔查询与 must 和 should 结合起来,但返回零结果...
不确定如何进行。一些见解会很棒。
你应该能够使用 filtered query 和功能分数来实现这个
示例:
{
"query": {
"filtered": {
"query": {
"function_score": {
"query": {
"match": {
"_all": "hospitality"
}
},
"functions": [
{
"filter": {
"term": {
"search_type": "Market"
}
},
"weight": 2
}
]
}
},
"filter": {
"term": {
"active": true
}
}
}
}
}