[英]ElasticSearch Nest - querying with just indexname
正在学习将ElasticSearch与Nest一起用作.Net客户端。 索引数据时,我没有定义的模型(类型映射)将索引写入其中,我依靠ElasticSearch为我创建索引
创建客户端
var settings = new ConnectionSettings(_config.Uri);
settings.DefaultIndex(_config.defaultIndexName);
_client = new ElasticClient(settings);
按类型信息索引数据
public void Index(object data)
{
var response = _client.Index(data, d => d.Type(data.GetType().Name));
if (!response.IsValid)
{
throw new InvalidOperationException(response.DebugInformation);
}
}
说数据类型是否为具有某些属性的Project
类
class Project
{
int Id {get; set;}
string Name {get; set;}
}
如何查询上述索引数据。 请记住,索引部分和搜索/查询部分是系统中完全隔离的部分,它们彼此之间并不了解,因此在搜索时,我所能获得的最大信息是查询的“项目”类型的名称,但而不是其内部字段详细信息。 因此,我该如何在ElasticSearch中运行搜索查询,因为其流畅的API需要像这样
_client.Search<Project>(...)
但是我想要一些通用的东西
_client.Search('project', ...)
谢谢
我不确定要说完全孤立时的意思,但是使用NEST进行搜索是使用SearchDescriptors建立的,您可以在其中指定很多类型,索引,查询类型等。
SearchResponse类型(在您的案例中是项目)告诉嵌套将对象映射到哪个对象类型。
所以:
_client.Search<Project>(...); // Response.Hits should be a list of IHit<Projects>
而您可以像这样在搜索描述符中指定搜索项目:
_client.Search<SomeResponseType>(searchDescriptor => searchDescriptor
.Type("project")
.Query(q => q.Term("name", "fooBar")));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.