首页 / 问答 / C#&.NET Core(.NET 7)程序中如何使用Elasticsearch.Net和NEST直接执行原始的DSL查询脚本语句呢?

C#&.NET Core(.NET 7)程序中如何使用Elasticsearch.Net和NEST直接执行原始的DSL查询脚本语句呢?

.NET C# Elasticsearch .NET Core NEST 1.47K 次浏览
0

Elasticsearch(简称:ES)是一种流行的分布式搜索和分析引擎,可以快速、可靠地存储和检索大量数据。在.NET Core中使用Elasticsearch可以帮助我们轻松地将搜索和分析功能集成到我们的应用程序中。

现在需要在C#&.NET Core(.NET 7)程序中使用Elasticsearch.Net和NEST直接执行原始的DSL查询脚本语句,应该如何实现呢?

比如,有如下Elasticsearch(ES)的DSL查询语句:

{
    "query": {
        "match_all": {}
    },
    "size": 2
}
回复 [×]
提交评论
请输入评论内容

2 个回答

  • 0

    以下是.NET Core中使用NEST的LowLevel.Search()方法执行原始的DSL查询的示例:

    以下是对代码片段的解读:

    1.创建ConnectionSettings对象

    在上面的代码中,创建了一个ConnectionSettings对象,用于配置与Elasticsearch服务器的连接。设置连接地址为http://192.168.1.91:9200,并使用基本身份验证(用户名elastic,密码123456)进行身份验证。

    2.创建ElasticClient对象

    在上面的代码中,使用上一步中创建的ConnectionSettings对象创建了一个ElasticClient对象,该对象提供了与Elasticsearch服务器进行高级别操作的方法,例如索引和查询数据等。

    3.创建查询DSL字符串

    在上面的代码中,创建了一个包含DSL查询语句的JSON字符串。该查询使用了match_all查询,表示查询所有文档,同时指定返回结果数量为2。

    4.执行查询

    在上面的代码中,使用LowLevel.Search方法执行查询,指定要查询的索引名称(test)和查询DSL字符串(json)作为参数。此外,指定了SearchResponse<dynamic>作为响应类型,以便将响应转换为包含所有结果的SearchResponse对象。查询结果可以通过Total属性获取总命中数,通过Hits属性获取每个命中文档的详细信息,例如文档ID、文档分数和文档字段等。

    5.处理查询结果

    在上面的代码中,使用Total属性获取总命中数,并使用foreach循环遍历每个命中文档的详细信息。在循环中,使用Source属性获取文档的字段信息,例如在文档中使用名称为sid的字段。

    Rector的个人主页

    Rector

    2023-03-28 回答

    • 0

      在C#&.NET Core程序中,除了使用NEST的LowLevel.Search()方法可以直接执行Elasticsearch的DSL查询语句外,还可以使用Raw()方法执行Elasticsearch的DSL查询语句,示例如下:

      注:使用这种方式执行原始DSL查询语句时,不能包含最外层的query,也不能在DSL查询语句中包含size,from等属性。

      Rector的个人主页

      Rector

      2023-03-28 回答

      我来回答