Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting Elasticsearch按不在筛选器中的字段值排序_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Boost - Fatal编程技术网 elasticsearch,boost,Sorting,elasticsearch,Boost" /> elasticsearch,boost,Sorting,elasticsearch,Boost" />

Sorting Elasticsearch按不在筛选器中的字段值排序

Sorting Elasticsearch按不在筛选器中的字段值排序,sorting,elasticsearch,boost,Sorting,elasticsearch,Boost,有人能帮我做一个查询,如果这个字段不是请求中查询的一部分,它将根据一些字段值对结果项进行排序。我有一个问题: { "_source": [ "ico", "name", "city", "status" ], "sort": { "_score": "desc", "status": "asc" }, "size": 20, "query": {

有人能帮我做一个查询,如果这个字段不是请求中查询的一部分,它将根据一些字段值对结果项进行排序。我有一个问题:

{
    "_source": [
        "ico",
        "name",
        "city",
        "status"
    ],
    "sort": {
        "_score": "desc",
        "status": "asc"
    },
    "size": 20,
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "normalized": {
                            "query": "idona",
                            "analyzer": "standard",
                            "boost": 3
                        }
                    }
                },
                {
                    "term": {
                        "normalized2": {
                            "value": "idona",
                            "boost": 2
                        }
                    }
                },
                {
                    "match": {
                        "normalized": "idona"
                    }
                }
            ]
        }
    }
}
结果根据字段状态按字母升序排序。Status包含的值很少,比如[active,Cancelled,old…],我需要一些东西,比如为查询中的每个可能的值提升。例如,主动增压5、取消增压4、旧增压3。。。。。。。。。。。有可能吗?谢谢。

你需要一个团队来实现你想要的

我刚刚使用了generic
match\u all
query进行查询,您可能可以继续在那里添加查询逻辑,但您正在寻找的解决方案位于下面查询的
sort
部分

确保
status
是一个类型

基于值的自定义排序 因此,基本上,文档将首先按照
\u score
进行排序,然后在排序后的文档上执行

请注意,脚本排序本质上是
desc
,因为我知道您希望在顶部显示
active
文档,然后是其他值。随便玩玩吧


希望这有帮助

嘿,Camo,上面的答案有用吗?这就是你要找的还是你还有其他疑问!!??看起来不错,但我现在很迷茫。现在我有另一个问题。
POST <your_index_name>/_search
{  
   "query":{  
      "match_all":{  

      }
   },
   "sort":[  
      { "_score": "desc" }, 
      {  
         "_script":{  
            "type":"number",
            "script":{  
               "lang":"painless",
               "inline":"if(params.scores.containsKey(doc['status'].value)) { return params.scores[doc['status'].value];} return 100000;",
               "params":{  
                  "scores":{  
                     "active":5,
                     "old":4,
                     "cancelled":3
                  }
               }
            },
            "order":"desc"
         }
      }
   ]
}
{  
   "scores":{  
      "active":5,
      "old":4,
      "cancelled":3,
      "new":6
   }
}