我有一个名为loc
的字段的索引,它正确映射为地理点。
运行搜索时:
curl -XGET 'http://localhost:9200/DB/_search'
我得到10个左右的结果,所有这些结果似乎都在loc
对象中有_source
。
如果我尝试:
curl -XGET 'http://localhost:9200/DB/_search?fields=name'
我得到一个fields
对象,其中name
字段已正确设置(name
存在,它是另一个字段,它是一个字符串)。事情是,如果我对loc
字段尝试相同的事情,如:
curl -XGET 'http://localhost:9200/DB/_search?fields=loc'
我无法获得任何回复,包括_source
和fields
对象。
运行此查询时如何返回loc
字段?
加分问题:有没有办法将loc
字段作为geohash返回?
更新,这是映射:
{
"geonames": {
"mappings": {
"place": {
"properties": {
"ele": {
"type": "string"
},
"geoid": {
"type": "string"
},
"loc": {
"type": "geo_point"
},
"name": {
"type": "string"
},
"pop": {
"type": "string"
},
"tz": {
"type": "string"
}
}
}
}
}
}
答案 0 :(得分:3)
您应该使用source filtering代替fields,并且您将获得预期的loc
字段。
curl -XGET 'localhost:9200/DB/_search?_source=loc'
引用有关字段的官方文档(重点已添加):
fields参数是关于显式标记为存储在映射中的字段,默认情况下关闭,通常不建议使用。使用源过滤来选择要返回的原始源文档的子集。