这是我的默认索引:
new ConnectionSettings(node).DefaultIndex("profiles")
我目前有这个查询,我需要使用NEST进行搜索:
GET profiles/_search
我的问题是,NEST的Search方法需要一个对象。
ElasticSearch.Search< object>()
如何在个人资料索引本身上执行搜索?
答案 0 :(得分:1)
ElasticSearch.Search()不在对象上搜索。调用搜索方法时,它会使用您的个人资料索引。
搜索后将得到结果。需要该对象。 为配置文件创建模型类,其属性如下所示。
public class Profile
{
public string Name{get;set;}
}
然后使用
调用您的ElasticSearch服务器ElasticSearch.Search<Profile>()
它将在结果中为您提供一个配置文件列表。
答案 1 :(得分:0)
像T
这样的NEST方法中的Search<T>()
有两个用途:
T
的属性提供强类型访问Search<T>()
返回每个匹配的_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"
}
}
}
}