繁体   English   中英

ElasticSearch Nest-仅使用索引名进行查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM