簡體   English   中英

在elasticsearch中處理不是最簡單的方法是什么?

[英]what is simplest way to handle not in elasticsearch?

在過去的幾個月里,我在 Rails 中開發了混合面板應用程序,從移動應用程序收集數據,基於移動應用程序,我有兩種索引,包含用戶配置文件和用戶事件,在用戶配置文件索引中,我收集用戶配置文件數據,如姓名,電子郵件,電話號碼......在用戶事件索引中,我只收集用戶在移動應用程序中完成的一些特定操作,如“應用程序打開”、“注冊”和......在我的應用程序中,我使用彈性搜索作為搜索引擎.AS 業務要求的結果我必須將這兩個索引分離為兩個不同的索引並插入彈性搜索。 一切都很好,直到我發現當混合面板管理員登錄並想要搜索彈性搜索數據時搜索結果是錯誤的。 正如我之前為每個移動用戶解釋的那樣,我有兩個包含配置文件和事件的索引,我在配置文件索引中使用配置文件 ID 來搜索數據並且我必須添加配置文件 ID 在配置文件和事件索引中都是唯一的,因此我可以使用配置文件 ID找到用戶事件,所以每個用戶都必須有個人資料,並且在我的設計中至少有一個事件索引,管理員可以找到用戶數據,問題是一個個人資料沒有事件,讓我解釋一下。 假設移動應用程序管理員決定為商務用戶生成配置文件,因此我們的系統中有沒有任何事件的配置文件,所以當混合面板管理員想要找到沒有任何事件的配置文件時,彈性返回沒有數據,換句話說,如果管理員想要找到來自事件索引彈性的配置文件不返回數據,因為沒有配置文件就不可能存在事件。在我的場景中,我至少有兩個查詢要搜索彈性搜索,我知道彈性搜索中的嵌套查詢和父子查詢,但這是不可能的原因時間成本和查詢性能。 因此,任何人都知道如何通過查詢的最小更改來處理我的問題。我必須添加我使用布爾查詢和術語查詢作為彈性搜索的默認查詢。

您可以檢查_msearch查詢

通過使用它,您可以向 elasticsearch 發送單個查詢,並從兩個索引中獲取響應並將它們合並到應用程序中。 但是elasticsearch無論如何都會在內部發送多個請求。 這是一個例子:

GET _msearch
{ "index": "index1" }
{"query":{"term":{"field1":{"value":"some value 1"}}}}
{ "index": "index2" }
{"query":{"term":{"field2":{"value":"some value 2"}}}}

暫無
暫無

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

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