0

ここのドキュメントから: http://www.elasticsearch.org/guide/reference/mapping/geo-point-type.html

geo_point は異なる形式を受け入れると言います。例: これら 2 つがサポートされています

  1. 「場所」:「-71.34、41.12」

  2. 「場所」:{「緯度」:41.12、「経度」:-71.34}

この二つは同じですか?と聞きたいです。私は ES 0.17.6 を使用していますが、次の問題があります。

(1)の形式でインデックスを作成すると、(2)の形式では検索できません。(1)の形式で再度検索すると成功です。

例: (2) 形式でインデックスを作成する場合:

curl -XPUT 'http://localhost:9200/twitter/pin/1' -d '
{
    "pin" : {
        "location" : {
                        lat: 41.12,
                        lon: -71.34
                },
        "tag" : ["food", "family"],
        "text" : "my favorite family restaurant"
    }
}' 

この (1) 形式では検索できません

curl -XGET 'http://localhost:9200/twitter/pin/_search' -d '
{
        "query": {
                "filtered" : {
                        "query" : {
                                "field" : { "text" : "restaurant" }
                        },
                        "filter" : {
                                "geo_distance" : {
                                        "distance" : "12km",
                                        "pin.location" : "-71.34, 41.12"
                                }
                        }
                }
        }
}
' 

そして、(2)形式を使用して検索すると成功します:

2. "pin.location" : {
            "lat" : 41.12,
            "lon" : -71.34
    }
4

1 に答える 1

2

geo_point が文字列として表される場合、次のlat lon形式に従う必要があります。"pin.location" : "41.12, -71.34"

于 2012-05-14T11:54:46.957 に答える