ElasticSearch關聯查詢

2021-09-19 23:35:29 字數 1418 閱讀 6523

elasticsearch是乙個基於lucene的開源搜尋引擎,支援全文檢索,提供restful介面。在es中,提供了類似於mongodb的面向文件儲存服務,這種面向文件的儲存非常靈活,但是文件與文件直接的關聯卻比較麻煩,mongodb裡面有dbref,elasticsearch裡面卻沒有這個,這篇文章就簡單講一講es的關聯查詢。

,

"last" : }}

}}

}

使用內嵌的型別的優勢在於一次查詢,本身的文件和內嵌的文件一起返回。唯一不方便的就是對內嵌資料進行插入或者刪除操作的時候需要使用update模組,update對資料的操作都是通過指令碼實現的,個人感覺使用起來不是很方便。為了解決這個問題,我們可以使用新方法,parent-child模組。

,

"properties": ,

"last" : }}

}

user就是test的child

然後我們需要在插入child資料的時候指定他關聯的是具體哪一條parent的id,假設我們在test裡面有一條資料,id為test_id,那麼我們想插入一條child資料關聯到id為test_id的資料的時候,我們需要這樣寫:

curl -xput localhost:9200/wahaha/user/user_id?parent=test_id    -d '

'

這裡我們插入了一條id為user_id的資料,並且和id為test_id的資料關聯。

接下來我們可以通過child的屬性去查詢parent

}}

}}

這裡我們使用has_child方法查詢的和last等於二狗的user資料關聯的test資料,在has_child方法中,我們顯式指定了關聯的type為user,然後對user進行了一次查詢,找到last等於二狗的資料,然後返回這條資料的parent

我們還可以通過parent屬性去查詢child

}}

}}

這裡我們使用的是has_parent方法,和has_child類似,我們先找到二狗他爹這條資料,然後再找到這條資料的child,返回結果。再提供乙個官網鏈結

使用parent-child就比內嵌型別靈活很多,對資料的修改不需要使用update。,可以根據parent查child,也可以根據child查parent,如果需要返回2種文件就需要使用聚合。

Elasticsearch關聯關係

elasticsearch父子關係 5.x參考 官網join介紹 es6.x一對多方案參考 注意 elasticsearch的關聯關係,必須要在同乙個索引裡面,而且父子關係必須在同乙個分片中。es6.x版本規定乙個索引中只能有乙個type,這就導致了,父子關係就必須放在同乙個type中。例子 本部落...

ElasticSearch關聯查詢

elasticsearch是乙個基於lucene的開源搜尋引擎,支援全文檢索,提供restful介面。在es中,提供了類似於mongodb 的面向文件儲存服務,這種面向文件的儲存非常靈活,但是文件與文件直接的關聯卻比較麻煩,mongodb裡面有dbref,elasticsearch裡 面卻沒有這個,...

elasticsearch關聯方式簡介

一 應用層連線 多索引,但是沒有資料顯示多個索引之間應該怎樣關聯,只能粗暴的當成乙個文件 params index type body json 二 非規範化資料 冗餘 將其他文件的資料統計出來,再根據關聯字段,將統計結果更新到本資料 問題 資料量大時,的的foreach一條一條更新,速度慢 三 巢...