簡體   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