【问题标题】:How can i write a query by using Nest Elasticsearch by C# ?如何使用 C# 的 Nest Elasticsearch 编写查询?
【发布时间】:2017-09-28 20:26:12
【问题描述】:

我的问题很简单。我可以在邮递员中写一个非常棒的查询;

POST : localhost:9200/logstash-2017.08.28/_search?pretty=true

{
	"query":{
		"match":{
			
			"level":"Error"
		}
	}
	
}

但是我必须通过使用嵌套框架在 C# 代码中处理这个东西。但是我做不到你能帮帮我吗?

   var response = EsClient().Search<DocumentAttributes>(s => s
                .Index("logstash-2017.09.18")
                .Type("json")
                .Query(q => q
                .Term(p => p.level, "Error")));

             //.Query(q => q.Raw(@"level:Error")));
             //      .Type("type").Query(q => q.Raw(@"{""match_all"":{}}")));

如何通过编写查询或使用字段来写下来?

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    您的查询不一样。对于json 查询,您指定了以下路径localhost:9200/logstash-2017.08.28/_search?pretty=true,这意味着您将搜索索引logstash-2017.08.28 中的所有文档。

    让我们看看您在使用 NEST 编写的查询中的内容。

    1. Index 方法表示您将搜索给定索引中的所有文档
    2. Type 方法意味着您将查询给定索引中具有给定类型的所有文档。在您的情况下,类型是json。所以Type 方法用于定义您要搜索的文档类型。

    因此,您的查询之间的区别在于,在第一种情况下,您查询的是索引中的所有文档,但在第二种情况下,您查询的是索引中类型为 json 的所有文档。

    【讨论】:

    • 请不要关注问题的错误部分。你可以这样使用:localhost:9200/logstash-2017.08.28/json/_search
    • 所以您的文档名称是json?
    • 您在第一个查询中使用匹配查询,在第二个查询中使用术语查询
    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2020-10-17
    相关资源
    最近更新 更多