假設我有這些檔案:
[
{
"_index" : "index_name",
"_type" : "_doc",
"_id" : "some_obj.{RANDOM UUID}:{REAL ID}",
"_source" : {
"id" : "some_obj.{RANDOM UUID}:{REAL ID}",
"parent_id": "{SOME ID}"
"name" : "{some name}"
}
},
{ ... }
]
我試圖通過使用查詢來獲取這些物件:
GET index_name/_search
{
"sort" : [
{ "id": {"order": "asc"}}
],
"query": {
"terms": {
"parent_id": [ "1" ]
}
}
}
因為{RANDOM UUID}在場地中間,id我無法訂購{REAL ID}
是否可以洗掉some_obj.{RANDOM UUID}:用于排序的部分或將其拆分:并使用第二部分進行排序或其他方式來排序{REAL ID}?
uj5u.com熱心網友回復:
以下查詢應該這樣做。我假設id您的映射中的欄位是keyword并且{REAL ID}是數字。如果它是一個字串,您應該type在查詢中更改為string并Long.parse從回傳陳述句中洗掉。
{
"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": """
return Long.parseLong(doc['id'].value.splitOnToken(':')[1]);
"""
},
"order": "asc"
}
}
],
"query": {
"term": {
"parent_id": {
"value": "1"
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452253.html
