我有一个包含JSON文档的文件 modified.json ,其中包含以下内容:
{"index":{"_index": "trial", "_type": "trial", "_id":"1"}}
{"clinics" : [{"price": 1048, "city": "Bangalore", "Location": {"lon": 77.38381692924742, "lat": 12.952155989068519}}, {"price": 1048, "city": "Bangalore", "Location": {"lon": 77.38381692924742, "lat": 12.952155989068519}}]
....还有更多类似的文件。我正在通过此命令运行批量插入:
curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @modified.json
接下来,通过 Sense(谷歌浏览器)插件,我发出以下请求
服务器:localhost:9200 / trial / trial
PUT _search
{
"mappings": {
"clinics": {
"properties": {
"Location": {"type": "geo_point"}
}
}
}
}
我不知道这是否为“位置”字段创建了映射。 发出搜索请求后,如下所示:
服务器:localhost:9200 / trial / trial
GET _search
{
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "20km",
"Location" : {
"lat" : 12.958487287824958,
"lon" : 77.69648881178146
}
}
}
}
}
}
我收到一条错误说: 找不到geo_point字段[Location]]; }]",
请帮我解决这个问题。此外,如果可能的话,还可以指导我如何对这些数据进行分面搜索,以显示距离范围内的诊所:例如20到30公里
答案 0 :(得分:0)
您需要撤消订购。首先放置映射映射,然后执行批量插入。
通过在插入之前放置地图,您可以让ES知道数据类型是什么,以便它可以正确地索引它们。 ES允许您将映射添加到现有索引,但已经存在的数据不会自动重新编制索引。 (这是一个已知问题)。