我有許多索引文件如此一:ElasticSearch:檢索字符串連接,或部分陣列
{
"_index":"myindex",
"_type":"somedata",
"_id":"31d3255d-67b4-40e6-b9d4-637383eb72ad",
"_version":1,
"_score":1,
"_source":{
"otherID":"b4c95332-daed-49ae-99fe-c32482696d1c",
"data":[
{
"data":"d2454d41-a74e-43af-b3b0-0febeaf67a99",
"iD":"9362f2eb-9bd7-4924-8b0e-77c27bb0aa56"
},
{
"data":"some text",
"iD":"c554b8ce-c873-4fef-b306-ec65d2f40394"
},
{
"data":"5256983c-ef69-4363-9787-97074297c646",
"iD":"8c90e2be-6042-4450-b0fd-0732900f8f65"
},
{
"data":"other text",
"iD":"8d8f8a61-02d6-4d3e-9912-9ebb5d213c15"
},
{
"data":"3",
"iD":"c880bfdf-eb4b-4c80-9871-fd44e06b2ed2"
}
],
"iD":"31d3255d-67b4-40e6-b9d4-637383eb72ad"
}
}
它類型的映射被配置是這樣的:
{
"somedata":{
"dynamic_templates":[
{
"defaultIDs":{
"match_pattern":"regex",
"mapping":{
"index":"not_analyzed",
"type":"string"
},
"match":".*(id|ID|iD)"
}
}
],
"properties":{
"otherID":{
"index":"not_analyzed",
"type":"string"
},
"data":{
"properties":{
"data":{
"type":"string"
},
"iD":{
"index":"not_analyzed",
"type":"string"
}
}
},
"iD":{
"index":"not_analyzed",
"type":"string"
}
}
}
}
我希望能夠根據它的ID檢索數據的字符串連接。
例如,如果ID爲c554b8ce-c873-4fef-b306-ec65d2f40394
,並且ID爲8d8f8a61-02d6-4d3e-9912-9ebb5d213c15
,我想檢索some text other text
。
這些ID在具有不同數據的相同類型的其他文檔中重複。
如果這是不可能的(我懷疑是這種情況),我想至少檢索一個包含我請求的數據的部分數組。
這些數組可能會變大(文檔數量也是如此),我只需要每次擊中一個或兩個元素。
如果我的要求都不可行,您如何建議更改我的映射以便於我的需求?
在此先感謝喬納森。
感謝您花時間回覆@mark。你當然指出了我的正確方向。看到這個警告雖然有點令人沮喪。而且,如果甚至可能,連接會變得如此複雜,以至於不值得。*嘆息*如果在接下來的幾個小時內沒有其他令人意外的答案出現,我會接受你的。再次感謝:-) –
如果不知道數據結構的完整意圖,可能將它以不同的方式存儲到ES中,針對您的情況進行優化即可。主要將data []'數組索引爲type,並將'iD'和'orderID'附加到它,並且不帶'inner_hits'的查詢(仍然不解決排序和連接)。 – mark
謝謝@mark。我意識到我的數據結構需要改變的原因很多。不過,我仍然需要這種連接能力,事實證明有很多方法可以實現這一點。如果您有興趣知道,我已在此發佈答案。 –