2016-12-07 6 views
0

У меня есть много документов в формате JSON с этой структурой:Как поставить отображение в JSon файлах с Elasticsearch

"positions": [ 
    { 
     "millis": 12959023, 
     "lat": 49.01525113731623, 
     "lon": 2.4971945118159056, 
     "rawX": -3754, 
     "rawY": 605, 
     "rawVx": 0, 
     "rawVy": 0, 
     "speed": 9.801029291617944, 
     "accel": 0.09442740907572084, 
     "grounded": true 
    }, 
    { 
     "millis": 12959914, 
     "lat": 49.01536940596998, 
     "lon": 2.4967825412750244, 
     "rawX": -3784, 
     "rawY": 619, 
     "rawVx": -15, 
     "rawVy": 7, 
     "speed": 10.841861737855924, 
     "accel": -0.09534648619563282, 
     "grounded": true 
    } 
... 
} 

я пытаюсь сопоставить этот документ с JSON Elasticsearch путем введения geo_point поля, чтобы получить документ, как ниже:

"positions": [ 
     { 
      "millis": 12959023, 
      "location" : { 
       "lat": 49.01525113731623, 
       "lon": 2.4971945118159056, 
      }   
      "rawX": -3754, 
      "rawY": 605, 
      "rawVx": 0, 
      "rawVy": 0, 
      "speed": 9.801029291617944, 
      "accel": 0.09442740907572084, 
      "grounded": true 
     }, 
    ... 
    } 

PS: эти документы предлагаются API.

Благодаря

+0

Как вы загружаете свои документы в ES? Вероятно, Logstash поможет в создании этого поля 'geo_point', или если вы используете ES5, вы можете использовать конвейер/процессор для достижения того же. – Val

ответ

0

Вы могли бы сделать что-то вроде этого:

curl -XPUT 'http://localhost:9200/<indexname>/positions/_mapping' -d @yourjsonfile.json 

Надеется, что это помогает SO!

0

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

  • Если вы используете elasticsearch < 5.0, вы можете использовать logstash и mutate filter.
  • Если вы используете elasticsearch> = 5.0 (мой совет), используйте проходной трубопровод и rename processor.

 Смежные вопросы

  • Нет связанных вопросов^_^