Nano Hash - криптовалюты, майнинг, программирование

Сопоставление logstash geoip.location с geo_point не работает

Я вижу, что в моих сопоставлениях по умолчанию geoip.location сопоставляется с типом geo_point:

GET myserver:9200/_template
    {
      "logstash": {
        "order": 0,
        "version": 50001,
        "template": "logstash-*",
        "settings": {
          "index": {
            "refresh_interval": "5s"
          }
        },
        "mappings": {
          "_default_": {
            "dynamic_templates": [
              {
                "message_field": {
                  "path_match": "message",
                  "mapping": {
                    "norms": false,
                    "type": "text"
                  },
                  "match_mapping_type": "string"
                }
              },
              {
                "string_fields": {
                  "mapping": {
                    "norms": false,
                    "type": "text",
                    "fields": {
                      "keyword": {
                        "type": "keyword"
                      }
                    }
                  },
                  "match_mapping_type": "string",
                  "match": "*"
                }
              }
            ],
            "_all": {
              "norms": false,
              "enabled": true
            },
            "properties": {
              "@timestamp": {
                "include_in_all": false,
                "type": "date"
              },
              "geoip": {
                "dynamic": true,
                "properties": {
                  "ip": {
                    "type": "ip"
                  },
                  "latitude": {
                    "type": "half_float"
                  },
                  "location": {
                    "type": "geo_point"
                  },
                  "longitude": {
                    "type": "half_float"
                  }
                }
              },
              "@version": {
                "include_in_all": false,
                "type": "keyword"
              }
            }
          }
        },
        "aliases": {}
      }
    }

У меня есть это в фильтре logstash, чтобы получить данные geoip из одного из моих полей:

geoip {
  source => "myField"
  add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
}
mutate {
  convert => [ "[geoip][coordinates]", "float"]
}

Но когда он попадает в ES, поле местоположения представляет собой «число» введите здесь описание изображения

Также, если я пытаюсь использовать визуализацию карты kibana, он говорит: «Нет совместимых полей».

Почему не работает сопоставление по умолчанию?

Редактировать: я также пробовал только geoip { source => "myfield"}, потому что мое сопоставление по умолчанию использует местоположение, а не координаты, но это не сработало.

Я также избавился от мутации и попробовал это, но это тоже не работает:

geoip {
  source => "myfield"
  add_field => [ "[geoip][location]", "%{[geoip][longitude]}" ]
  add_field => [ "[geoip][location]", "%{[geoip][latitude]}"  ]
}

Ответы:


1

https://discuss.elastic.co/t/geoip-location-not-getting-mapped-to-a-geo-point-type/78625

Проблема заключалась в моем незнании того, как работает сопоставление индексов. Это сопоставление по умолчанию применяется к индексам, соответствующим имени «logstash-*», а имя моего индекса не соответствует этому.

Изменение имени моего индекса на logstash-myindex сработало.

15.03.2017
  • Просто подробнее об этом решении: устаревший шаблон индекса по умолчанию с именем logstash делает этот трюк (по крайней мере, в настоящее время). Он используется для шаблона индекса logstash-*. Вот почему переименование помогло. Шаблоны можно найти в разделе Управление стеком / Управление индексами / Шаблоны индексов (обычно www.your-es-server.com/app/management/data/index_management/templates) 18.02.2021

  • 2

    Вероятно, у вас просто опечатка (пункт 1), но вы также должны отметить несколько других моментов.

    1. Вы используете geoip.coordinates в logstash и geoip.location в _mapping
    2. Вам нужно удалить convert => [ "[geoip][coordinates]", "float"] - это неправильно.
    3. Как только в поле в ES есть данные, вы не можете преобразовать их в geo_point без переиндексации ваших данных с новым сопоставлением (если вы находитесь на стадии разработки, это обычно означает удаление любых индексов и повторную вставку ваших данных ).
    4. После любого изменения сопоставления в настройках кибаны есть кнопка для перезагрузки сопоставления.
    13.03.2017
  • где опечатка? 13.03.2017
  • У вас есть координаты в одном месте и местоположение в другом. Также действует пункт 2 13.03.2017
  • круто, я тестирую все это закомментировано, если сопоставление уже настроено по умолчанию, может быть, мне просто нужен geoip {source => myField } и ничего больше 13.03.2017
  • да -- geoip по умолчанию создает поле [geoip][location], которое ваше сопоставление настроено на преобразование в тип geo_point. Все это должно работать до тех пор, пока вы стираете свой индекс и создаете его заново. (поэтому удалите свои mutate и add_field) 14.03.2017
  • Пункт номер 4 сработал для меня как шарм. Я делал каждый шаг, кроме этого! Большое спасибо. 26.04.2018
  • К сожалению, я не могу найти кнопку для шага 4. Может ли кто-нибудь помочь? 12.02.2019
  • В разделе «Управление» / «Шаблоны индексов» / «Выберите имя шаблона» слева, затем в главном окне в той же строке отображается имя индекса- * жирным шрифтом, есть звезда, кнопка перезагрузки и красная корзина. Это кнопка перезагрузки между * и корзиной. 12.02.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..