如何使用C#的Nest Elasticsearch编写查询?

时间:2017-09-28 12:06:05

标签: c# elasticsearch nest

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

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"":{}}")));

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. Index方法意味着您要搜索给定索引中的所有文档
  2. Type方法意味着您将查询给定索引中具有给定类型的所有文档。在您的情况下,类型为json。所以Type方法用于定义您要搜索的文档类型。
  3. 因此,您的查询之间的区别在于,在第一种情况下,您要查询索引中的所有文档,但在第二种情况下,您要查询索引中类型为json的所有文档。