<p>我怀疑您首先在<code>fromCoordinates</code>上有<code>object</code>映射,然后试图更新映射。试着放下&;重新创建索引,然后所有这些变体都可以正常工作:</p>
<hr/>
<p>Python</p>
<pre><code>from elasticsearch import Elasticsearch
import time
es_instance = Elasticsearch(['http://localhost:9200'])
es_instance.indices.create(
'anindex',
body={"mappings": {
"properties": {
"fromCoordinates": {"type": "geo_point"},
"toCoordinates": {"type": "geo_point"},
"seenCoordinates": {"type": "geo_point"}
}
}})
es_instance.create(
index="anindex",
id=0,
body={
"fromCoordinates": {"lat": 43.9962005615, "lon": 125.684997559},
"toCoordinates": {"lat": 40.080101013183594, "lon": 116.58499908447266},
"seenCoordinates": {"lat": 33.62672, "lon": 109.37243}})
es_instance.create(
index="anindex",
id=1,
body={
"fromCoordinates": [
117.21600341796875,
36.857200622558594
],
"toCoordinates": [
113.81099700927734,
22.639299392700195
],
"seenCoordinates": [
117.216,
36.91663
]
})
# syncing is not instant so wait
time.sleep(1)
print(es_instance.count(index="anindex"))
</code></pre>
<hr/>
<p>基巴纳:</p>
<pre><code>DELETE anindex
PUT anindex
{
"mappings": {
"properties": {
"fromCoordinates": {
"type": "geo_point"
},
"toCoordinates": {
"type": "geo_point"
},
"seenCoordinates": {
"type": "geo_point"
}
}
}
}
PUT /anindex/_doc/1
{
"fromCoordinates": {
"lat": 36.857200622558594,
"lon": 117.21600341796875
},
"toCoordinates": {
"lat": 22.639299392700195,
"lon": 113.81099700927734
},
"seenCoordinates": {
"lat": 36.91663,
"lon": 117.216
}
}
PUT /anindex/_doc/2
{
"fromCoordinates": [
117.21600341796875,
36.857200622558594
],
"toCoordinates": [
113.81099700927734,
22.639299392700195
],
"seenCoordinates": [
117.216,
36.91663
]
}
PUT anindex/_doc/3
{
"fromCoordinates": "22.639299392700195,113.81099700927734",
"toCoordinates": "26.53849983215332,106.8010025024414",
"seenCoordinates": "26.34169,107.46743"
}
</code></pre>