Как импортировать данные CSV или JSON в Elasticsearch с помощью deviantony / docker -elk - PullRequest
0 голосов
/ 08 мая 2020

Я только начал собирать elasticsearch и docker через несколько дней go, и у меня возникли некоторые проблемы с загрузкой данных в elasticsearch. Репозиторий стека elasti c, который я использую, выглядит следующим образом: https://github.com/deviantony/docker-elk

Я пытался следовать этому руководству, которое я нашел в Интернете: https://www.bmc.com/blogs/elasticsearch-load-csv-logstash/, но не смог найти никаких индексов при загрузке кибаны.

Вот что я сделал. Я загрузил образцы данных и сохранил их в папке с именем data в каталоге root. В файле docker -compose.yml я сделал bind-mount, который указывает на мою папку с внешними данными.

elasticsearch:
    build:
      context: elasticsearch/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./elasticsearch/config/elasticsearch.yml
        target: /usr/share/elasticsearch/config/elasticsearch.yml
        read_only: true
      - type: bind
        source: ./data
        target: /usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: password
      # Use single node discovery in order to disable production mode and avoid bootstrap checks
      # see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
      discovery.type: single-node
    networks:
      - elk

И в моем файле logsta sh .conf. Вот что я изменил:

input {
  tcp {
    port => 5000
  }
  file {
    path => "/usr/share/elasticsearch/data/conn250K.csv"
    start_position => "beginning"
  }
}

filter {
  csv {
    columns => [ "record_id", "duration", "src_bytes", "dest_bytes" ]
  }
}

output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    user => "elastic"
    password => "password"
    index => "network"
  }
}

После запуска команды «docker -compose up» в терминале я не смог найти какой-либо шаблон индекса для создания в Kibana, так как индексы не сгенерированы. . Я не могу понять, что не так.

1 Ответ

1 голос
/ 13 мая 2020

Попробуйте подключить папку внешних данных к контейнеру logsta sh вместо elasticsearch.

  logstash:
    build:
      context: logstash/
      args:
        ELK_VERSION: $ELK_VERSION
    volumes:
      - type: bind
        source: ./logstash/config/logstash.yml
        target: /usr/share/logstash/config/logstash.yml
        read_only: true
      - type: bind
        source: ./logstash/pipeline
        target: /usr/share/logstash/pipeline
        read_only: true
      - type: bind
        source: ./data
        target: /usr/share/logstash/data
        read_only: true
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch
...