Что такое SQL-эквивалент в Kibana? - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в Kibana и Elasticsearch.У меня есть имя поля с именем serviceprovidername.Я хотел бы узнать, сколько разных имен поставщиков услуг присутствует в этом поле.Как мне этого добиться?

Это то, что я пробовал до сих пор.

поисковый запрос

GET _search{“ages”: {“distinct_serviceprovidername”:{“terms”:{“field” :”serviceprovidername”}}}}

Если мои необработанные данные похожиэто

 Serviceprovidername 
 _______________________
          X
          Y
          X
          Y
          Y
          Z

Я исключаю результат как:

    Serviceprovidername 
    _______________________
             X
             Y
             Z

Пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

В моем случае это прекрасно работало с поиском по шаблону и регулярным выражением.

Так выглядят мои данные Tags:All Docs,Domains,ToAnalyse,Unique

Я применил фильтры к столбцам тегов и получил уникальный счетчик.

Ниже мой запрос:

GET test1/_search
{
  "aggs": {
    "7772": {
      "filters": {
        "filters": {
          "Unique": {
            "query_string": {
              "query": "Tags:Unique",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "ToAnalyse": {
            "query_string": {
              "query": "Tags:To.*",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "All Docs": {
            "query_string": {
              "query": "Tags:All Docs",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "Outdated": {
            "query_string": {
              "query": "Tags:Outdated",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          },
          "Domains": {
            "query_string": {
              "query": "Tags:Domains",
              "analyze_wildcard": true,
              "default_field": "*"
            }
          }
        }
      }
    }
  },
  "size": 0,
  "_source": {
    "excludes": []
  }
}

И мой вывод:

{
  "took" : 12,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 152636,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "7772" : {
      "buckets" : {
        "All Docs" : {
          "doc_count" : 152636
        },
        "Domains" : {
          "doc_count" : 43374
        },
        "Outdated" : {
          "doc_count" : 24322
        },
        "ToAnalyse" : {
          "doc_count" : 128260
        },
        "Unique" : {
          "doc_count" : 152636
        }
      }
    }
  }
}

Надеюсь, это поможет:)

0 голосов
/ 22 декабря 2018

Я не нашел «отличных» вещей в Кибане.Однако я могу нанести это на ось XY, как и предлагалось. Спасибо за помощь.

0 голосов
/ 20 декабря 2018

Следующее «объединение терминов» должно работать, если вы можете запустить его в Kibana> DevTools> Console:

GET /_search
{
    "size": 0,
    "aggs" : {
        "distinct_serviceprovidername" : {
            "terms" : { "field" : "serviceprovidername" }
        }
    }
}

Запрос возвращает источник значений из нескольких сегментов, включая различные значения поля serviceprovidername, например:this:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 15601,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "distinct_serviceprovidername" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 67,
      "buckets" : [
        {
          "key" : "X",
          "doc_count" : 301
        },
        {
          "key" : "Y",
          "doc_count" : 207
        },
        {
          "key" : "Z",
          "doc_count" : 175
        }
      ]
    }
  }
}

Edit: "size": 0 используется, когда требуются агрегации, но нет совпадений с поиском.В этом случае выборка поисковых запросов не имеет никакого смысла, поэтому я проигнорировал ее, чтобы сделать запрос более эффективным, возвращая только результаты агрегации.

...