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