[英]Mapping format on elasticsearch
我打算通過elasticsearch將json文檔上傳到我的服務器,但是我想先映射它,然后再上傳,但是我一直收到搜索階段執行異常錯誤。 json數據看起來像這樣
{"geometry":{"type":"Point","coordinates":[-73.20266100000001,45.573647]},"properties":{"persistent_id":"XVCPFsbsqB7h4PrxEtCU3w==","timestamp":1408216040000,"tower_id":"10.48.66.178"}}
到目前為止,我已經嘗試過將其作為映射。 我不確定我在做什么錯...
curl –XPUT 'http://localhost:9200/carrier/_search?q=coordinates?pretty=true' -d'
{ “geometry”: {
“type” : {“type” : “string”},
“coordinates” : {“type” : “geo_point”}
},
“properties” : {
“persistent_id” : {“type” : “string”},
“timestamp”: { “type” : “long”},
“tower_id” : {“type” : “string”}
}'
這是因為您使用_search
端點來安裝映射。
您必須改為使用_mapping
端點,如下所示:
curl –XPUT 'http://localhost:9200/carrier/_mapping/geometry' -d '{
...your mapping...
}'
這里有一些問題。 首先,您需要使用放置映射請求而不是搜索請求。 請求的主體必須以類型的名稱開頭,后跟要添加的properties
(字段)列表。 第二個問題是您可能從某些文檔中復制了該示例,在該文檔中,所有ascii引號( "
)被替換為它們的特殊unicode版本( “
和”
),而XPUT
參數前面的破折號看起來像n-dash –
而不是普通破折號-
您需要將所有花哨的引號和破折號替換為它們的ascii版本,因此,所有的工作聲明應如下所示(假設doc
為您的文檔類型):
curl -XPUT 'http://localhost:9200/carrier/doc/_mapping' -d '{
"doc": {
"properties": {
"geometry": {
"properties": {
"type": {
"type": "string"
},
"coordinates": {
"type": "geo_point"
}
}
},
"properties": {
"properties": {
"persistent_id": {
"type": "string"
},
"timestamp": {
"type": "long"
},
"tower_id": {
"type": "string"
}
}
}
}
}
}'
那么您可以像這樣添加文檔:
curl -XPUT 'http://localhost:9200/carrier/doc/1' -d '{"geometry":{"type":"Point","coordinates":[-73.20266100000001,45.573647]},"properties":{"persistent_id":"XVCPFsbsqB7h4PrxEtCU3w==","timestamp":1408216040000,"tower_id":"10.48.66.178"}}'
請注意,要添加映射,如果您已經嘗試向該索引添加文檔並且已經創建映射,則可能需要刪除並重新創建索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.