elasticsearch 如何使用嵌套搜索到默认索引?
这是我的默认索引:elasticsearch 如何使用嵌套搜索到默认索引?,elasticsearch,nest,elasticsearch,Nest,这是我的默认索引: new ConnectionSettings(node).DefaultIndex("profiles") 我当前有此查询,需要使用NEST执行搜索: GET profiles/_search 我的问题是,NEST需要一个对象作为搜索方法 ElasticSearch.Search< object>() 如何对配置文件索引本身执行搜索?ElasticSearch.search不搜索对象。当您调用搜索方法时,它使用您的配置文件索引 您将在搜索后得到一个结果。它需
new ConnectionSettings(node).DefaultIndex("profiles")
我当前有此查询,需要使用NEST执行搜索:
GET profiles/_search
我的问题是,NEST需要一个对象作为搜索方法
ElasticSearch.Search< object>()
如何对配置文件索引本身执行搜索?ElasticSearch.search不搜索对象。当您调用搜索方法时,它使用您的配置文件索引
您将在搜索后得到一个结果。它需要对象。
为具有如下属性的概要文件创建模型类
public class Profile
{
public string Name{get;set;}
}
并使用
ElasticSearch.Search<Profile>()
它将在结果中为您提供一个概要文件列表。嵌套中的T方法(如搜索)用于两个目的:
通过lambda表达式为T的属性提供强类型访问
在API返回JSON文档的情况下,例如搜索返回每个命中的_source字段下的原始索引文档,T将是该文档反序列化的类型。
如果您不需要或不希望这些行为中的任何一种,您可以将object或dynamic用于t,并为诸如Field之类的值指定字符串。然后,您需要了解如何阅读POCO;在dynamic的情况下,返回的类型是一个类似内部JObject的类型,因此您可以动态访问它的属性
为了在URI中没有类型的情况下执行搜索,可以使用
var searchResponse = client.Search<object>(s => s
.AllTypes()
.Query(q => q
.Match(m => m
.Field("some_field")
.Query("match query")
)
)
);
很有魅力。所有类型都是我缺少的。谢谢
POST http://localhost:9200/profiles/_search
{
"query": {
"match": {
"some_field": {
"query": "match query"
}
}
}
}