0
通過路由,我們可以在特定分片中分配特定文件/ doc/json,這使得提取數據變得容易。 但我認爲可以將json文件的特定字段存儲在特定的碎片中。 例如: 我有三個字段:用戶名,消息和時間。我創建了3個用於索引的分片。 現在我想 用戶名存儲在一個分片中,消息存儲在另一個分片中,時間在另一個分片中。我正在尋找在elasticsearch中存儲特定分區的特定字段
謝謝
通過路由,我們可以在特定分片中分配特定文件/ doc/json,這使得提取數據變得容易。 但我認爲可以將json文件的特定字段存儲在特定的碎片中。 例如: 我有三個字段:用戶名,消息和時間。我創建了3個用於索引的分片。 現在我想 用戶名存儲在一個分片中,消息存儲在另一個分片中,時間在另一個分片中。我正在尋找在elasticsearch中存儲特定分區的特定字段
謝謝
不,這是不可能的。整個文檔(JSON文檔)將存儲在一個分片上。如果你想做你描述的內容,那麼你應該將數據分成不同的文檔,然後你可以按不同的方式進行傳播。
至於推理,想象有一個與document5匹配的用戶名查詢。如果document5分佈在許多分片上,那麼就必須查詢這些分片,以便返回document5的其他部分來編譯結果。設想一下跨不同領域的複雜AND查詢,如果兩個字段匹配以計算文檔是否命中,則會有大量流量(並等待)。
這意味着在elasticsearch它無法實現這一點。我在想如果這樣做可能,那麼搜索性能將會提高,如果需要在特定領域進行搜索。 – Lav
我不明白,如果您將文檔分開,搜索速度會更快。想象一下,我們正在尋找'username =「john」'。用你的方式,你只有1個碎片做所有的計算。通過elasticsearch方式,所有三個分片共享搜索負載。你的方式會如何更快? – ramseykhalaf
就檢索而言,這將是一個笨拙的過程,但搜索將在一個領域執行,否則,如果它繼續尋找包含不同領域的所有分片 – Lav