0

ドキュメントごとに任意の数の位置データポイントがあります(最大80まで)。これらの場所に対してgeo_distanceフィルターを実行したいと思います。Elasticsearchのドキュメントによると:

  The geo_distance filter can work with multiple locations / points per document. 
  Once a single location / point matches the filter, the document will be included in the filter.

これを達成する方法は決して明確にされていません。インデックス付きドキュメントの外観に次のネストされたフィールドが含まれるように、事前に場所の数を定義する必要があると思います。

 {
"pin" : {
    "location" : {
        "lat" : 40.12,
        "lon" : -71.34
    }
  }
}

{
"alt_pin" : {
    "location" : {
        "lat" : 41.12,
        "lon" : -72.34
    }
}
}

次に、何らかの方法でpin.locationとalt_pin.locationに対してフィルターをかけると思います。

任意の数の場所(pin1、pin2、pin3、...)がある場合はどうなりますか?私はこのようなことをすることができますか?

"pin" : {
    "locations" : [{
        "lat" : 41.12,
        "lon" : -72.34
    }, {
        "lat" : 41.12,
        "lon" : -72.34
    }]
}
}

その作品にいくつかのバリエーションがありますか?たぶん、lat / lng座標の代わりにgeo_hashesを使用していますか?

4

1 に答える 1

0

複数locationの値をフィールドの配列として表すことができlocationます。これを試して:

{
    "pin": [
        {
            "location" :{
                "lat": 40.12,
                "lon": -71.34
            }
        },
        {
            "location" :{
                "lat": 41.12,
                "lon": -72.34
            }
        }
    ]
}
于 2012-10-04T03:45:12.330 に答える