ElasticSearch 不会 Return 通过动态 class 的嵌套调用获取数据

ElasticSearch Doesn't Return Data Through Nest Call with Dynamic class

我是 Elastic search 和 NEST 的新手,我正在尝试通过 NEST 连接我的 ES 服务器。我的 ES 连接初始化如下所示。

ElasticClient client = null;
        public  void Connect()

        {

            var local = new Uri("http://192.168.40.95:9200/");

            var settings = new ConnectionSettings(local).DisableDirectStreaming();

            client = new ElasticClient(settings);

            settings.DefaultIndex("gisgcc18q4");

            ReadAllData();
        }

        public void ReadAllData()
        {
           var x= client.Search<dynamic>(s=> s.MatchAll());
        } 

回复如下图所示,

我从来没有得到任何点击或数据。我在我的连接器中是否犯了任何错误,另外请建议我将 JSOn ES 查询也转换为 NEST 的好教程。

您的连接看起来没问题,请您通过单击并获取行查询和响应来验证 DebugInformation 下的详细摘要。

对 Postman 应用相同的查询后。

请在快速观看 window 中复制以下表达式并将其粘贴到屏幕截图中显示的同一行。

((Elasticsearch.Net.ApiCallDetails)response.ApiCall).DebugInformation

您将获得详细信息,这将有助于您调查此问题。

看截图中的Uri

POST /gisgcc18q4/object/_search?typed_keys=true

表明您使用的是早于 7 的版本,例如 5 或 6,其中使用了文档类型。在这种情况下,文档类型名称 "object" 是从作为通用参数参数传递的 dynamic 类型推断出来的,但我怀疑文档没有使用文档类型名称 "object", 但其他东西。

如果索引"gisgcc18q4"只包含一种文档类型,可以使用

var x = client.Search<dynamic>(s=> s.MatchAll().AllTypes());

或者你可以传递具体的文档类型名称来使用

var x = client.Search<dynamic>(s=> s.MatchAll().Type("_doc"));

一个很好的客户端入门教程是 elasticsearch-net-example GitHub 存储库。这是构建 ASP.NET 核心 Web 应用程序以搜索 Nuget 包的演练。