2016-12-15 54 views
0

我正在使用ES 5.在C#上使用Nest lib。在Elasticsearch上加入來自不同索引的查詢

我在ES上有兩個索引。一個有聯繫信息和其他聯繫事件。我係統中的每個客戶都可以有很多聯繫人,每個聯繫人可以觸發更多的事件。幾乎每個聯繫行動都是一個事件。

我將「聯繫人」索引中的所有關聯信息以及「事件」索引中的所有事件信息都包含在內。

所以我有一個可以通過聯繫信息和事件過濾的搜索。我的問題是如何在一次搜索中加入兩個搜索,即聯繫人和事件搜索。

現在我有兩個查詢,首先我得到匹配的聯繫人,然後我搜索這些聯繫人ID的事件。問題是第一次搜索可能會返回聯繫人id的thousents,我需要爲所有這些搜索提供第二個搜索。

有沒有更好的方法來做到這一點?還是應該重新考慮我的索引,例如將聯繫和事件存儲在一起並使用父/子策略?

+0

查詢的最終目標是什麼?要獲取與搜索查詢匹配的聯繫人的事件嗎? –

+0

的最終目標是獲得聯繫人,但很多聯繫人信息被保存爲事件,幾乎每個聯繫人都會採取行動。因此,搜索需要匹配姓名,姓氏等聯繫信息,並聯系事件,如他們看到電子郵件,導航到頁面等。 – Adriano

回答

0

是的,您需要選擇將數據存儲在一個索引中還是使用父子模式,第一種方法更快,第二種方法在您有很多事件並且經常添加新事件時更方便。不過,最好不要爲單個查詢中提到的成千上萬個聯繫人獲取所有事件,而是使用滾動API,並在處理數據時獲取數據。