elasticsearch 带过滤器的函数评分elasticsearch
我想要一个函数,它接受所有的结果,并且只有当它们与过滤器匹配时才对它们进行排序。 我尝试过这些查询,但没有结果。有人能帮忙吗 试用期1:
elasticsearch 带过滤器的函数评分elasticsearch,
elasticsearch,
elasticsearch,我想要一个函数,它接受所有的结果,并且只有当它们与过滤器匹配时才对它们进行排序。 我尝试过这些查询,但没有结果。有人能帮忙吗 试用期1: { "query": { "function_score": { "query": { "filtered": { "query": {
{
"query": {
"function_score": {
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"term": {
"category_boats": "motor_boat"
}
}
]
}
}
}
},
"functions": [
],
"score_mode": "first"
}
}
}
试用2:
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"term": {
"boat_type": "offshore_yacht"
}
},
"weight": 1
},
{
"filter": {
"term": {
"year_built": "2016"
}
},
"weight": 1
},
{
"filter": {
"term": {
"manufacturer": "MasterCraft"
}
},
"weight": 2
}
],
"score_mode": "first"
}
}
}
在最后一个代码中,我得到一个错误:没有注册名为[weight]的函数。]
那么,过滤器的重量是否得到支持?一些帮助?在elasticsearch 1.4中添加了对的支持,在此之前它被称为boost\u factor
例如:
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"term": {
"boat_type": "offshore_yacht"
}
},
"boost_factor": 1
},
{
"filter": {
"term": {
"year_built": "2016"
}
},
"boost_factor": 1
},
{
"filter": {
"term": {
"manufacturer": "MasterCraft"
}
},
"boost_factor": 2
}
],
"score_mode": "first"
}
}
}
elasticsearch的哪个版本?版本:“编号”:“1.3.2”。但是,如果这是一个问题,我可以更新ElasticSearch服务器。下面的方法不起作用吗?我使用下面的解决方案。谢谢基蒂谢谢基蒂。它起作用了。我不知道“重量”只适用于1.4后的松紧带。在教程和示例中,我总是感到困惑,为什么有时会有“权重”,有时会有“boost_factor”,我很难在弹性“2.2.0”中实现这一点。他们改变了过滤的方式。这并不是简单地用“重量”来取代“提升系数”。有人能帮忙吗?我刚刚尝试了上面的查询,在elasticsearch 2.2.0中效果很好。您是否可以用您正在执行的实际查询和2.2.0中面临的问题提交另一个问题上面的查询列出了结果-为true,但它们不像Elasticsearch 1.3.2中那样按提升因子或权重排序。它显示了来自“match_all”:{}的结果,但没有按1.3.2版之类的过滤器对我们想要的任何内容进行排序。这一定是另一种方式。。。