代码之家  ›  专栏  ›  技术社区  ›  LosManos

是否可以使用ElasticSearch.Net或Nest进行动态响应

  •  1
  • LosManos  · 技术社区  · 7 年前

    client.Read(...) Nest nor ElasticSearch.Net .


    IDocument 这可能会解决我的问题,但我无法将该版本与Elasticsearch5.5一起使用。

    ElasticSearch.Net和Nest的所有示例(版本5和版本6)都要求我在编译时知道响应的一般格式。例如。 Read<Customer>

    我的问题是 我们不知道格式

    2 回复  |  直到 7 年前
        1
  •  2
  •   Russ Cam    7 年前

    你可以用 dynamic 如果响应是真正动态的,则作为泛型类型。

    在5.x中,这将是Json.NET的 JObject JObject

    动态 JObject 类型。如果您愿意使用Json.NET的 JObject 输入,你可以 hook up Json.NET as the serializer NEST.JsonNetSerializer nuget package ,用作文档的序列化程序,然后使用其 JObject

        2
  •  0
  •   LosManos    7 年前

    (回答我自己的问题感觉很奇怪,但我想显示生成的代码以供将来参考。)

    var settings = new ConnectionSettings(new Uri(@"http://localnhost:9200"))
        .DefaultIndex("myindex");
    var client = new ElasticClient(settings);
    
    var res = client.Search<dynamic>(s => s
        .AllTypes());
    
    var rows = res.Documents;
    Assert.IsTrue(rows.Count >= 1);
    
    dynamic row = res.Documents.First();
    Assert.AreEqual("50.7031526", row.POSITION.lat.ToString()); // It is case sensitive.
    Assert.AreEqual(50.7031526, (double)row.POSITION.lat); // Convert to type explicitly.
    
    推荐文章