我有一個包含apache日誌數據的elasticsearch索引。這是我想要做的:在Elasticsearch中創建我的數據子集的最佳方式是什麼?
- 確定訪問某個文件(例如/signup.php)的所有訪問者(通過ip號碼)。
- 請在我的數據的搜索/查詢/匯聚,但限制進行考察,以包含IP號的第1步中
發現在SQL世界的文件,我只是想創建一個臨時表並從第一步插入所有匹配的IP號碼。接下來,我會查詢我的主表並通過加入我的臨時表中的IP號碼來限制結果集。
我明白在elasticsearch中連接是不可能的。該elasticsearch documentation提出一些方法來處理這樣的情況:
- 應用方面加入
這似乎並不現實,因爲IP號碼列表可能會非常大,它似乎效率不高送結果傳遞給客戶端,然後在一個巨大的條件過濾器中將其傳回給elasticsearch。
- 非規範化的數據
- 嵌套的對象和/或父 - 子關係
這將涉及遍歷匹配的IP號碼和在用於與類似「in_group」任何給定的IP號碼的索引更新的每個文檔:真的,所以我可以在以後的查詢中使用它。這似乎也是非常不切實際和低效的,特別是因爲源查詢(步驟1)是動態的。
我不知道如果與嵌套對象動態創建新文檔是在這種情況下實際的。在我看來,我最終會複製大量的數據。
我是elasticsearch和noSQL的新手,所以也許我只是以錯誤的方式來看問題,我不應該試圖首先模擬一個JOIN。
但是這似乎是分割數據集的一種常見情況,這讓我想知道我是否忽略了其他一些明顯的做法?
任何幫助,將不勝感激!
我不認爲它應該成爲答案,但是,是的,只要我能理解你的問題,你就必須使用應用端連接。對Elastic來說不應該太重(尤其是如果你使用過濾器,而不是查詢來獲取IP) –