无法使用NEST将动态对象插入弹性搜索

时间:2015-11-07 04:20:35

标签: elasticsearch nest

我正在创建一个动态对象。我通过IDictionary分配值。将IDictionary的集合添加到对象。然后我使用NEST代码将动态对象添加到弹性搜索。它抛出了stackoverflow异常。"类型' System.StackOverflowException'未处理的异常。发生在mscorlib.dll"

这是我尝试过的。

 var node = new Uri("http://localhost:9200");
            var settings = new ConnectionSettings(node,defaultIndex: "test-index");
            var client = new ElasticClient(settings);

            try
            {
                dynamic x = new ExpandoObject();
                Dictionary<string, object> dic = new Dictionary<string, object>();
                dic.Add("NewProp", "test1");
                dic.Add("NewProp3", "test1");
                x = dic;
                var index3 = client.Index(x);
            }
            catch (Exception ex)
            {
                string j = ex.StackTrace;
            }

我需要在ElasticSearch中使用动态对象创建索引,因为我将有一个包含300多个工作表的excel工作簿,每个工作表都将被命名为类型,工作表中的内容将是_source。

在上面的例子中&#39; x&#39;创建的动态对象是工作表的名称,添加到字典中的值是excel表的行和列。

我哪里错了。

此致 HEMA

1 个答案:

答案 0 :(得分:1)

我相信你可以跳过ExpandoObject而只是索引Dictionary<string, object>()

var dictionary = new Dictionary<string, object>();
dictionary.Add("NewProp", "test1");
dictionary.Add("NewProp3", "test1");

client.Index(dictionary);