评分后对Elasticsearch结果进行排序

时间:2018-03-27 14:21:51

标签: elasticsearch

我有一个像上面那样的查询。我试图通过created_at日期按降序对结果进行排序后对结果进行评分,这意味着排序对仅返回订单的内容没有影响。

当我使用排序数组时,它会影响返回的结果。我该如何解决这个问题?谢谢!!!

 array:3 [▼
     "index" => "quotes"
     "type" => "quote"
  "body" => array:5 [▼
    "from" => 0
    "size" => 50
    "min_score" => 0
    "query" => array:1 [▼
      "function_score" => array:1 [▼
        "query" => array:1 [▼
          "bool" => array:4 [▼
            "filter" => array:1 [▼
              0 => array:1 [▼
                "term" => array:1 [▼
                  "value_proposition" => "encouraging"
                ]
              ]
            ]
            "must_not" => array:3 [▼
              0 => array:1 [▼
                0 => array:1 [▼
                  "term" => array:1 [▼
                    "explicit" => "1"
                  ]
                ]
              ]
              1 => array:1 [▼
                0 => array:1 [▼
                  "term" => array:1 [▼
                    "explicit" => "1"
                  ]
                ]
              ]
              2 => array:1 [▼
                0 => array:1 [▼
                  "term" => array:1 [▼
                    "value_duration" => "ephemeral"
                  ]
                ]
              ]
            ]
            "must" => []
            "should" => array:18 [▶]
          ]
        ]
      ]
    ]
    "sort" => []
  ]
]

1 个答案:

答案 0 :(得分:0)

所以,

Elasticsearch并不是最好的工具,因此我最终使用PHP的本地排序方法usort来排序依次为Elasticsearch返回它的结果。但有一点需要注意,通过从排序函数中分离出来,性能得到了显着提高。即我没有使用usort作为高阶函数,定义了上面的函数并将名称作为字符串传递。