弹性搜索排序 - 返回排序字段作为响应

时间:2017-03-06 14:56:32

标签: sorting elasticsearch lucene

我需要让排序配置成为响应的一部分,所以我假设我有这个查询

{{1}}

我需要将此作为响应的一部分,以使我的facets / ui状态与该排序同步。我看到有一种"排序"响应字段,但它基本上列出了为排序选择的值,但不列出哪个字段和哪种排序类型。

阅读文档我不确定应该是https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html#_sort_values

的情况

无法在网络上找到任何相关内容,很多如何在堆栈上对示例进行排序,但没有关于如何在响应中反映排序的内容。

如果重要,我目前正在使用Elasticsearch 2.4

1 个答案:

答案 0 :(得分:0)

实际上这不是开箱即用的。

我使用我的中间件解决了这个问题。因此,当客户想要在ES上搜索时,就会发生这种情况

client -> middleware -> ES

要在响应中包含排序,中间件会执行类似这样的操作

result = es.search(query)
result['sort'] = query['sort'] if query.key?('sort')
return result

所以我将请求中的排序字段复制到响应中,这对于客户端在处理聚合/分面搜索时非常有用