簡體   English   中英

基於 mongodb 從彈性搜索中過濾數據

[英]Filtering data from elastic search based on mongodb

我的 ElasticSearch 中有一個項目列表。 用戶輸入查詢,我從彈性搜索中獲取結果。 現在,我在 mongodb 中存儲了一些用戶偏好,我想根據這些偏好過濾彈性搜索的結果。

  1. 假設,我從 Elasticsearch 得到一個項目列表(item_ids)。

  2. Mongo DB 具有以下架構。 id, user_id, item_id

  3. 我選擇這個 MongoDB 模式是因為用戶可能有一個非常大的項目列表(以百萬計),他不想在結果中看到。

我如何通過規模實現這一目標? 我需要更改我的架構嗎?

您應該為此使用 elasticsearch 過濾,您可以在 ES 查詢中包含過濾條件,這將減少返回的結果數量

  1. 您必須從 ES 返回大量數據集,然后在 MongoDB 中進行過濾,這是一個兩步過程,並且在 ES 和 mongo 方面都很昂貴。
  2. 在 ES 中使用過濾器,它將返回更少的數據,這將避免在 mongoDB 進行額外的后處理,過濾器首先執行,默認情況下緩存在 elasticsearch 端,因此您不需要進一步的緩存解決方案,如 Z86A1B907D54BF7010394BF316E18 等。

請參閱過濾器和查詢上下文以及來自同一官方文檔的有關過濾器緩存的信息。

Elasticsearch 會自動緩存常用的過濾器,以提高性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM