Уплотнение термина Elasticsearch, возвращающее пустые ведра - PullRequest
0 голосов
/ 10 марта 2020

Я использую термин агрегации 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 } ] } } } "

Кажется, что запрос и ответ хороши в отладочной информации, но объект агрегации, который я показал выше, все еще пуст

...