2016-12-07 23 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 
    } 
... 
} 

我試圖通過引入geo_point場拿到文件喜歡用Elasticsearch此JSON文件映射如下所示:

"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