gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:23:19 29 4
gpt4 key购买 nike

正在学习将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")));

关于.net - ElasticSearch Nest-仅使用索引名进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908529/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com