我想對某個查詢應用某種排序,它應該先按照一個值對所有其他文檔排序。我需要在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
你終於找到了解決方案嗎? –