Kibana Tophits при преобразовании группы по полю не по всему полю

Итак, у меня есть случай, когда мне нужно использовать лучшие результаты при преобразовании, я хочу показать данные на основе

у меня есть эти данные

email      col2      col3     col4  col5    Time
a.com         a        a        a    a     11:00 
a.com         a        a        a    a     11:01 
a.com         a        b        a    a     11:02

Я хочу удалить дубликат электронной почты и показывать его только в последнее время. Я использую преобразование и агрегирую его на основе максимального времени. а для группы by я выбираю все нужные мне поля. Он возвращает такие данные, как: я преобразовываю индекс и группирую его: электронная почта, col2, col3, col4 и агрегирую его по максимальному (времени)

Текущий индекс

email      col2      col3     col4  col5    Time
a.com         a        a        a    a     11:01 
a.com         a        b        a    a     11:02

Я только хочу, чтобы он показывал данные моей цели

email      col2      col3     col4  col5    Time
a.com         a        b        a    a     11:02

Как я могу сделать преобразование на основе групповой электронной почты вместо каждого поля? Так как мне нужно все поле, но я не думаю, что правильно добавлять все as group by, но есть только 2 метода: либо агрегация, либо groupby

мое определение трансформации: это не то, что мне нужно

{
  "id": "transform_baru",
  "source": {
    "index": [
      "email-profile-nov-bug*"
    ],
    "query": {
      "match_all": {}
    }
  },
  "dest": {
    "index": "transform_baru"
  },
  "pivot": {
    "group_by": {
      "Email.keyword": {
        "terms": {
          "field": "Email.keyword"
        }
      },
      "fa.keyword": {
        "terms": {
          "field": "fa.keyword"
        }
      },
      "ever.keyword": {
        "terms": {
          "field": "ever.keyword"
        }
      },
      "bln.keyword": {
        "terms": {
          "field": "bln.keyword"
        }
      },
      "domain.keyword": {
        "terms": {
          "field": "domain.keyword"
        }
      },
      "Email_age_category.keyword": {
        "terms": {
          "field": "Email_age_category.keyword"
        }
      },
      "Status_Category.keyword": {
        "terms": {
          "field": "Status_Category.keyword"
        }
      },
      "Vintage_cat.keyword": {
        "terms": {
          "field": "Vintage_cat.keyword"
        }
      }
    },
    "aggregations": {
      "extract_date.max": {
        "max": {
          "field": "extract_date"
        }
      }
    }
  },
  "settings": {},
  "version": "7.8.0",
  "create_time": 1607832008196
}

person yuliansen    schedule 11.12.2020    source источник
comment
Итак, если я правильно понял, вам нужно сгруппировать по электронной почте (потому что вы не хотите дублировать данные из одного и того же электронного письма), вам нужно взять документ с этим электронным письмом и с последней отметкой времени. Из этого документа вам нужны поля col2, col3 и col4? Я прав?   -  person Val    schedule 14.12.2020
comment
Уважаемый Вал, Да, вы правы. На самом деле, если это возможно, я хочу, чтобы он был сгруппирован по нескольким полям. Сгруппировать по: Электронная почта, Блн Совокупный: Максимум (Время), и я хочу показать остальную часть поля   -  person yuliansen    schedule 14.12.2020
comment
Кроме того, можете ли вы показать свое определение transform?   -  person Val    schedule 14.12.2020
comment
Уважаемый @Val, извините меня, но я не понимаю, что вы подразумеваете под определением преобразования. Я сделал это, перейдя в Управление стеком › Преобразования › Создать преобразования. Пожалуйста, объясните мне больше. Спасибо   -  person yuliansen    schedule 14.12.2020
comment
Да, так вы можете показать определение вашего преобразования в формате JSON?   -  person Val    schedule 14.12.2020
comment
Уважаемый Вэл, я добавил это выше. В любом случае это было фальшиво и не соответствовало тому, что я хочу.   -  person yuliansen    schedule 14.12.2020


Ответы (1)


Проблема решена с помощью этого Обходной путь Tophit Но я не смог его использовать. Вот как это использовать:

  1. Выбирайте только ту группу, которая вам нужна. В моем случае я бы просто добавил электронную почту
  2. Отредактируйте конфигурацию json и добавьте агрегацию с помощью скрипта last_doc.
  3. Измените поле «@timestamp» на поле времени.
  4. Таким образом, технически вы только используете электронную почту как groupby, а last_doc как агрегацию.
  5. В предварительном просмотре может быть показано только то поле, которое вы выбрали для группировки, но когда индекс преобразования будет создан, остальная часть поля будет отображаться в скрипте last.doc. Так что не волнуйтесь и просто создайте преобразование

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

Спасибо всем, кто пытается мне помочь. Ваше здоровье

person yuliansen    schedule 15.12.2020