Arhn - архитектура программирования

Подсчет всех вхождений для каждого поля в одном индексе

Я хочу подсчитать, сколько записей у меня есть для каждого поля в моей базе данных elasticsearch для одного индекса. Я пробовал с кодом ниже, но это возвращает только общее количество записей. Я работаю на Питоне.

Что я пробовал до сих пор:

qry = {
"aggs": {
"field": {
"terms" : {"field": "field"}
}
}, "size": 0
}

r = es.search(body=qry,
              index="webhose_english")

Мой текущий результат:

Out[64]: 
{'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
'aggregations': {'field': {'buckets': [],
'doc_count_error_upper_bound': 0,
'sum_other_doc_count': 0}},
'hits': {'hits': [], 'max_score': 0.0, 'total': 4519134},
'timed_out': False,
'took': 16}

И в идеале у меня было бы что-то вроде:

{'field_1': 321,
 'field_2': 231,
 'field_3': 132}

  • взгляните на существующие: elastic. co/guide/en/elasticsearch/reference/current/ 07.01.2019
  • Спасибо, но это возвращает только документы, отличные от null_value. Как получить значение счетчика для каждого поля всего набора данных? 07.01.2019

Ответы:


1

Раньше эта информация была частью _field_stats API. , но он был удален в версии 6.0. Так что вы на правильном пути, вам понадобится агрегация. Я думаю, что value_count — это тот, который вам нужен, и для верности я также добавил global, чтобы мы знали, сколько всего документов есть.

Три примера документов:

PUT foo/_doc/1
{
  "foo": "bar"
}
PUT foo/_doc/2
{
  "foo": "bar",
  "bar": "bar"
}
PUT foo/_doc/3
{
  "foo": "bar",
  "bar": "bar",
  "baz": "bar"
}

Агрегация (я не уверен, что может быть более короткая версия этого, особенно со многими полями):

GET foo/_search
{
  "aggs": {
    "count_fields": {
      "global": {},
      "aggs": {
        "count_foo": {
          "value_count": {
            "field": "foo.keyword"
          }
        },
        "count_bar": {
          "value_count": {
            "field": "bar.keyword"
          }
        },
        "count_baz": {
          "value_count": {
            "field": "baz.keyword"
          }
        }
      }
    }
  },
  "size": 0
}

Результат:

{
  "took" : 16,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "count_fields" : {
      "doc_count" : 3,
      "count_foo" : {
        "value" : 3
      },
      "count_bar" : {
        "value" : 2
      },
      "count_baz" : {
        "value" : 1
      }
    }
  }
}
08.01.2019

2

Я сделал это, повторив следующий запрос, а затем собрав «всего» значения в словаре:

qry = {
"query": {
"exists": {
"field": "fields_to_iterate"
}
}
}
14.01.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..