如何使用 NEST 搜索到默认索引?
How to search to the default index using NEST?
这是我的默认索引:
new ConnectionSettings(node).DefaultIndex("profiles")
我目前有这个查询,我需要使用 NEST 执行搜索:
GET profiles/_search
我的问题是,NEST 需要一个用于搜索方法的对象。
ElasticSearch.Search< object>()
如何对配置文件索引本身执行搜索?
ElasticSearch.Search() 不搜索对象。当您调用 Search 方法时,它会使用您的 profiles 索引。
搜索后会有结果。它需要该对象。
为具有如下属性的配置文件创建模型 class。
public class Profile
{
public string Name{get;set;}
}
并使用
调用您的 ElasticSearch 服务器
ElasticSearch.Search<Profile>()
它会在结果中给你一个配置文件列表。
像 Search<T>()
这样的 NEST 方法中的 T
有两个用途:
- 通过 lambda 表达式为
T
的属性提供强类型访问
- 在 API returns 一个 JSON 文档的情况下,例如
Search<T>()
在每个命中的 _source
字段下返回最初索引的文档, T
将是该文档反序列化的类型。
如果您不需要或不希望这些行为中的任何一种,您可以对 T
使用 object
或 dynamic
并为 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"
}
}
}
}
这是我的默认索引:
new ConnectionSettings(node).DefaultIndex("profiles")
我目前有这个查询,我需要使用 NEST 执行搜索:
GET profiles/_search
我的问题是,NEST 需要一个用于搜索方法的对象。
ElasticSearch.Search< object>()
如何对配置文件索引本身执行搜索?
ElasticSearch.Search() 不搜索对象。当您调用 Search 方法时,它会使用您的 profiles 索引。
搜索后会有结果。它需要该对象。 为具有如下属性的配置文件创建模型 class。
public class Profile
{
public string Name{get;set;}
}
并使用
调用您的 ElasticSearch 服务器ElasticSearch.Search<Profile>()
它会在结果中给你一个配置文件列表。
像 Search<T>()
这样的 NEST 方法中的 T
有两个用途:
- 通过 lambda 表达式为
T
的属性提供强类型访问
- 在 API returns 一个 JSON 文档的情况下,例如
Search<T>()
在每个命中的_source
字段下返回最初索引的文档,T
将是该文档反序列化的类型。
如果您不需要或不希望这些行为中的任何一种,您可以对 T
使用 object
或 dynamic
并为 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"
}
}
}
}