2016-11-08 39 views
0

我必須包含這個樣子(省略不必要的字段)文檔的索引Elasticsearch「自我加入」式操作

{ 
_id: String, 
... 
relatedIds: [ String ] 
} 

relatedIds遞歸指的是文件本身的_id

我想編寫一個查詢,它將只返回relatedIds數組中不是_id的文檔的ID。

在摘要中,我想抓住所有這些標識符,執行一些計算,以便最終relatedIds中的每個id都引用索引中的文檔。

回答

1

如果您的ID字段也包含在源文件中,你可以做這樣的:

POST index/_search 
{ 
    "script_fields": { 
    "relatedIdsLessId": { 
     "script": { 
     "inline": "doc. relatedIds.values - doc.id.value" 
     } 
    } 
    } 
} 

這將計算一個名爲relatedIdsLessId新的領域,這將只包含相關的ID不屬於該ID文件本身。

注意:如果尚未完成,則需要確保enable dynamic scripting

+0

默認情況下,內聯腳本處於禁用狀態。 – schellingerht

+0

我還沒有能夠嘗試這一點,因爲上面提到的內聯腳本默認是禁用的,並且我沒有訪問(當前)針對我所針對的ES的配置文件。 –