2016-05-31 73 views
1

我的以下問題是,我有一個項目列表,並希望用elasticsearch索引這些項目。我有一個正在運行的elasticsearch實例,並且此實例有一個名爲「默認」的索引。Elasticsearch NEST Indeces and Indexing

於是我運行下面的代碼:

var items = GetAListOfItem(); 
var response = Client.IndexMany(items); 

我也Client.IndexManyAsync(items)試了一下。但那沒有做任何事情。

此列表中只有1個項目被索引。而已。我認爲它是最後一項,它被編入索引。

我認爲這可能是IEnumerable和多個枚舉的東西,但我把它解析爲List<Item>

另一個問題是關於Elasticsearch的最佳實踐。使用每個模型的索引是否很常見?所以如果我從Exchange和另一個系統收集數據,我會做2個indeces?

  1. ExchangeIndex
  2. OtherSystemIndex

謝謝您的幫助。

更新:我看到我的Client.Index可以使所有這些調用成功,但所有這些對象都從NEST獲得相同的ID。通常她必須自己增加,不是嗎?

更新2:我固定的索引問題。我設置了一個空的ID字段。

但是仍然有關於Elasticsearch的問題。

回答

1

如果您正在使用相同的ID上傳的所有數據,也不會增加的ID,將與該ID更新記錄,你將有隻有一個記錄,這樣你就可以上傳數據沒有ID或放棄只要有唯一的ID就可以識別記錄。 另一個常見問題是您的記錄與您爲索引提供的映射不同。

關於另一個問題,在索引中,存儲與您相關的信息,即使這些信息包含來自多個模型的內容,但您必須避免的唯一情況是混合信息,如果您有一個關於例如,服務器日誌不會與用戶活動混合使用。

+0

非常感謝您的回答。如前所述,我遇到了設置ID字段但未填寫的問題。我現在就把它刪除了。 從Exchange和數據庫收集數據。所以一個模型是電子郵件,另一個模型基本上是聯繫人或其他東西。所以從你的例子我會說,即時通訊做2個indeces,對吧? – Marius

+0

這取決於,在你的例子中,只有電子郵件中的索引不要說太多,更好地豐富索引數據並創建包括聯繫信息或任何相關信息的索引(你必須在索引的目的下思考),所以你不需要查詢多個索引來獲得某些東西。在這個系統中有更好的重複數據,會更快的處理事情。 –