如何从Elasticsearch获取所有记录,并将最新条目作为第一条记录
例如,
如果我有5个ID从1到5的库, 如何从图书馆5获取完整的书籍清单,并按输入的最新书籍进行排序。
这是我的示例查询,其中包含嵌套字段
http://localhost:9200/library*/_search
{
"size": 1000,
"_source": [
"library.bookname","library.author"
],
"query": {
"bool": {
"must": [
{
"match": {
"library.id": 5
}
}
]
}
}
}
答案 0 :(得分:0)
您可以使用sort option in the request body。如果要按输入的最新书籍进行排序,则应将一个order
选项设置为desc
。为此,您需要有一个时间戳字段或一个类似的字段,可以按其输入的顺序进行排序。
假设您有一个日期字段timestamp
,它将用于按最新输入的日期进行排序,然后您可以执行以下操作对结果进行排序:
"sort": { "timestamp": { "order": "desc" } }
。
因此,您的示例查询将如下所示:
http://localhost:9200/library*/_search
{
"size": 1000,
"sort": { "timestamp": { "order": "desc" } },
"_source": [
"library.bookname","library.author"
],
"query": {
"bool": {
"must": [
{
"match": {
"library.id": 5
}
}
]
}
}
}