Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 带过滤器的函数评分elasticsearch_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch 带过滤器的函数评分elasticsearch,elasticsearch,elasticsearch" /> elasticsearch 带过滤器的函数评分elasticsearch,elasticsearch,elasticsearch" />

elasticsearch 带过滤器的函数评分elasticsearch

elasticsearch 带过滤器的函数评分elasticsearch,elasticsearch,elasticsearch,我想要一个函数,它接受所有的结果,并且只有当它们与过滤器匹配时才对它们进行排序。 我尝试过这些查询,但没有结果。有人能帮忙吗 试用期1: { "query": { "function_score": { "query": { "filtered": { "query": {

我想要一个函数,它接受所有的结果,并且只有当它们与过滤器匹配时才对它们进行排序。 我尝试过这些查询,但没有结果。有人能帮忙吗

试用期1:

{
           "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版之类的过滤器对我们想要的任何内容进行排序。这一定是另一种方式。。。