我正嘗試在C#中使用NEST客戶端並使用Elasticsearch v5.x構建通用數據加載器。我可以定義自定義的類映射到我的ES索引上的類型,並且特別提到哪個屬性應該被視爲id。這工作正常,我可以使用批量API來加載數據。在NEST中爲Elasticsearch類型動態分配IdProperty
[ElasticsearchType(IdProperty = "col1")]
public class Table1
{
public int col1 { get; set; }
public string col2 { get; set; }
public string col3 { get; set; }
}
但是,這將需要我定義類,每次我必須加載到索引的新類型。所以我想構建一個通用加載實用程序,我可以提供一個XML輸入,動態生成一個類對象,並且對於該類對象,我需要設置IdProperty。我仍然試圖找出如何快速構建動態對象,並且遇到了本週我將嘗試的幾個樣本。
因此,讓我說我能夠通過這個障礙,我的下一個問題是如何在運行時動態設置IdProperty?任何其他建議也是受歡迎的。
感謝
感謝您的回覆。我採取了一條稍微不同的路線來解決主要問題。我現在正在將我的XML轉換爲Json並生成我用來索引文檔的原始Json。在兩者之間,我有一個配置集來標識Json的哪個屬性應該被視爲ID,並且我正在動態地添加該ID。一旦json被構建,我就使用低級客戶端的批量方法。 – askids
也要補充,我嘗試使用動態與ExpandoObject類似的結果,即動態添加ID屬性。它適用於較小的一組數據。但是對於更大的集合,我開始得到Stackoverflow異常(可能是由於錯誤編碼和動態對象限制)。所以我沒有進一步追求這個方法。 – askids