Как экспортировать содержимое моего CSV-файла в сопоставление Elasticsearch?

У меня есть CSV-файл с 1000 строк и 3 столбца следующим образом:

field1, field2, field3
ABC     A65     ZZZ
...

Я хочу экспортировать его содержимое в сопоставление myrecords индекса myindex (у меня больше сопоставлений в этом индексе):

PUT /myindex
{
  "mappings": {
    "myrecords": { 
      "_all": {
        "enabled": false
      },
      "properties": {
          "field1":  { "type": "keyword" },
          "field2":  { "type": "keyword" },
          "field3":  { "type": "keyword" }
       }
    }
  }
}

Есть ли простой способ сделать это?

ОБНОВЛЕНИЕ:

Я выполнил этот конфигурационный файл Logstash, но хотя размер CSV небольшой (1000 записей), процесс работает вечно. Когда я выполняю GET /myindex/myrecords/_search, я все время вижу только 1 запись.

input {
    file {
        path => ["/usr/develop/data.csv"]
        start_position => beginning
    }
}

filter {  
    csv {
        columns => ["field1","field2","field3"]
        separator => ","
    }
}

output {
    stdout { codec => rubydebug }
    elasticsearch {
        action => "index"
        hosts => ["127.0.0.1:9200"]
        index => "myindex"
        document_type => "myrecords"
        document_id => "%{Id}"  // Here I also tried "%{field1}"
        workers => 1
    }
}

person Dinosaurius    schedule 04.09.2017    source источник
comment
Этот ответ может помочь: stackoverflow.com/questions/35433121/   -  person Val    schedule 04.09.2017
comment
@Вал: Спасибо. Я попробовал это решение, но данные не экспортируются (только 1 запись). Я предполагаю, что проблема возникает из-за document_id => "%{Id}". У меня нет поля Id в моем отображении. Как я могу решить эту проблему? Пожалуйста, мой обновленный вопрос.   -  person Dinosaurius    schedule 04.09.2017
comment
Просто удалите настройку document_id.   -  person Val    schedule 04.09.2017
comment
@Вал: я пробовал. В терминале я вижу эту информацию все время, но данные не возвращаются GET из Elastic: [2017-09-04T13:40:49,886][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500} [2017-09-04T13:40:50,091][INFO ][logstash.pipeline ] Pipeline main started [2017-09-04T13:40:50,140][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}   -  person Dinosaurius    schedule 04.09.2017
comment
Я также вижу это в журналах Elastic: [2017-09-04T13:42:08,638][INFO ][o.e.c.r.a.DiskThresholdMonitor] [LOQmMI1] low disk watermark [85%] exceeded on [LOQmMI11SJyen1gQOlXnug][LOQmMI1][/usr/local/elasticstack_5.5.0/elasticsearch-5.5.0/data/nodes/0] free: 15.3gb[11%], replicas will not be assigned to this node   -  person Dinosaurius    schedule 04.09.2017
comment
Попробуйте добавить sincedb_path => "/dev/null" в свой ввод file.   -  person Val    schedule 04.09.2017
comment
@Val: Теперь это работает. Спасибо. Не могли бы вы опубликовать ответ и объяснить значение sincedb_path?   -  person Dinosaurius    schedule 04.09.2017
comment
Вместо этого вам следует подумать о том, чтобы проголосовать за ответ, на который я ссылаюсь. sincedb_path — это просто файл, который позволяет Logstash запоминать строки, которые он уже проанализировал. Установка его в null гарантирует, что logstash запустится в начале файла.   -  person Val    schedule 04.09.2017