我想对某个查询应用某种排序,它应该先按照一个值对所有其他文档排序。我需要在MySQL中实现类似ORDER BY CASE的功能,但我无法找到如何执行的操作。Elasticsearch首先按某个字段值排序
在弹性的索引中的每个元件具有以下结构:
{
"id": 123,
"name": "Title",
"categories": ["A", "B", "C"],
"price": 100,
"city": "London",
"country": "United Kingdom",
"status": 1
}
我做以下查询:
{
"fields": [],
"sort": [{"price": {"order": "asc"}}],
"size": 0,
"query": {
"query_string": {
"query": "status:1 AND country:'United Kingdom'"
}
},
"aggs": {
"id": {
"terms": {
"field": "id",
"size": 10
}
}
}
}
所以通过首先用值“利物浦”排序列city
并考虑下面的例子:
{"id": 1, "name": "Test", "categories": ["A", "B", "C"], "price": 100, "city": "London", "country": "United Kingdom", "status": 1 }
{"id": 2, "name": "Sample", "categories": ["A", "D", "F"], "price": 200, "city": "Manchester", "country": "United Kingdom", "status": 1 }
{"id": 3, "name": "Title", "categories": ["X", "Y", "Z"], "price": 1000, "city": "Liverpool", "country": "United Kingdom", "status": 1 }
我希望有outpu t以下ID:3,1,2。
如何更改我的查询以获取此行为?
UPDATE:该版本是1.7.2
什么是您的案例中的“按时间排序”? – Val
你终于找到了解决方案吗? –