I am able to get a list of dashboards using a simple Get request in something like Postman:
http://localhost:9200/.kibana/_search?q=type:dashboard&size=20
However I need to get the list using the Nest client in C# and I have no idea how to form that sort of search request with the ElasticClient DSL. For more "traditional" searches I would use something like:
var settings = new ConnectionSettings(new Uri("http://localhost:9200/"))
.DefaultMappingFor<ElasticCustomerDTO>(i => i
.IndexName("customer")
.IdProperty(p => p.Identifier)
);
var client = new ElasticClient(settings);
ISearchResponse<ElasticCustomerDTO> searchResponse = client.Search<ElasticCustomerDTO>(s => s
.Query(q => q
.SimpleQueryString(f => f
.Query(filter.Name)
)
)
);
I'm struggling to create anything like the dashboard search query in that form (at least anything that returns results). Any help would be greatly appreciated.
You can use below NEST query to get Kibana dashboards
var searchResponse = await client.SearchAsync<Dictionary<string, object>>(s => s
.Index(".kibana")
.QueryOnQueryString("type:dashboard")
.Size(20));
foreach (var document in searchResponse.Documents)
{
Console.WriteLine(((Dictionary<string, object>)document["dashboard"])["title"]);
}
I'm using Dictionary<string, object>
as returned type as I don't think there is any type in NEST representing Kibana DTOs.