Отображение долготы и широты из данных .csv в тип geo_point не работает - PullRequest
0 голосов
/ 27 августа 2018

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

classes2.conf

    input {
  file {

    path => "D:\Workspace.Elastic\FinalVersions\classes.csv"    
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {

    csv {
        columns => ["TITLE","PROFFESSOR","MAJOR","SEMESTER","student_count","unit","rating","submit_date","latitude","longitude"]
        separator => ","


    }   

    mutate {
        convert => { "longitude" => "float" }
        convert => { "latitude" => "float" }
        rename => {
            "longitude" => "[location][lon]"
            "latitude" => "[location][lat]"
        }
    }
}

output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => "localhost:9200"
        index => "geopointest"
    }
}

classesRating_mapping2.json

{
  "class": {
    "properties": {

      "location": {
        "type": "geo_point"
      }
    }
  }
}

Я получаю следующую ошибку:

[местоположение] определяется как объект в отображении [документ], но это имя уже используется для поля в других типах "

Я создал индекс геоинтеза и добавил отображение json следующим образом:

curl  -X PUT -H "Content-Type: application/json" http://localhost:9200/geopointest/class/_mapping --data-binary @classesRating_mapping2.json

Чего мне не хватает? Большое спасибо.

1 Ответ

0 голосов
/ 27 августа 2018

Проблема в том, что в вашем отображении вы используете class, которое является именем пользовательского типа. Это означает, что вам нужно изменить вывод elasticsearch следующим образом:

elasticsearch {
    hosts => "localhost:9200"
    index => "geopointest"
    document_type => "class"        <-- add this line
}

Без этой строки Logstash использует имя типа log, и по этой причине ваше отображение было отключено.

...