Я использую термин агрегации Elasticsearch, чтобы получить уникальные значения из поля. Вот код, который я использую:
var res = client.Search<KibanaFaxLog>(s => s
.Size(0)
.Query(q => q.MatchAll())
.Aggregations(a => a
.Terms("servers", t => t
.Field(f => f.ServerURL.Suffix("keyword")))
)
);
result = JsonConvert.SerializeObject(res.Aggregations.Terms("servers").Buckets);
Я получаю ответ с пустыми ячейками: [{}, {}]
Ниже приведены мои DSL-запрос, который я использую из инструментов разработчика Kibana, дает точный результат.
GET efax/_search
{
"size": 0,
"aggregations" : {
"urls" : {
"terms" : { "field" : "ServerURL.keyword"}
}
}}
В чем проблема в этом?
Редактировать : Ниже приведен документ
{
"_index" : "efax",
"_type" : "_doc",
"_id" : "-VRqgHABF0HYEOSDNhHT",
"_score" : 1.0,
"_source" : {
"PracticeId" : 2,
"PracticeName" : "Neighborhood Physcians Practice",
"ServerName" : "baseline01",
"DataBaseName" : "202685DEV",
"ServerURL" : "localhost",
"Status" : -1003,
"TransactionId" : "",
"Action" : "Send Fax",
"SenderFaxNumber" : "555",
"RecipientFaxNumber" : "444",
"FaxUser" : "demo.number",
"FaxSystem" : "efaxer",
"QueryString" : "ID=483",
"ActivityTime" : "2020-02-21T08:54:51.648363-05:00",
"ActivityTimeUTC" : "2020-02-21T13:54:51.648363Z",
"FailureMessage" : "Authentication error"
}
Редактировать : Вот сопоставление для поля c, которое я собираю
{...
"ServerURL": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},...
}
Редактировать : Я включил отладочную информацию и получил следующий ответ.
"Successful (200) low level call on POST: /efax/_search?pretty=true&error_trace=true&typed_keys=true # Audit trail of this API call: - [1] HealthyResponse: Node: http://xxx:9200/ Took: 00:00:01.0937463 # Request: {"aggs":{"servers":{"terms":{"field":"ServerURL.keyword"}}},"query":{"match_all":{}},"size":0} # Response: { "took" : 0, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 23, "max_score" : 0.0, "hits" : [ ] }, "aggregations" : { "sterms#servers" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : "ccc.com", "doc_count" : 8 }, { "key" : "http://localhost/", "doc_count" : 5 }, { "key" : "http://www.ccc.com/202685", "doc_count" : 5 }, { "key" : "localhost", "doc_count" : 5 } ] } } } "
Кажется, что запрос и ответ хороши в отладочной информации, но объект агрегации, который я показал выше, все еще пуст