ベクタタイル検索API
地理空間値のためにベクタタイルを検索します。結果はバイナリの Mapboxベクタタイル として返されます。
Python
resp = client.search_mvt(
index="my-index",
field="my-geo-field",
zoom="15",
x="5271",
y="12710",
)
print(resp)
Js
const response = await client.searchMvt({
index: "my-index",
field: "my-geo-field",
zoom: 15,
x: 5271,
y: 12710,
});
console.log(response);
コンソール
GET my-index/_mvt/my-geo-field/15/5271/12710
リクエスト
GET <target>/_mvt/<field>/<zoom>/<x>/<y>
POST <target>/_mvt/<field>/<zoom>/<x>/<y>
前提条件
- このAPIを使用する前に、Mapboxベクタタイル仕様に精通している必要があります。
- Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対して
read
インデックス権限を持っている必要があります。クロスクラスタ検索については、リモートクラスタを参照してください。
パスパラメータ
<target>
- (必須、文字列) 検索するデータストリーム、インデックス、またはエイリアスのカンマ区切りリスト。ワイルドカード(
*
)をサポートします。すべてのデータストリームとインデックスを検索するには、このパラメータを省略するか、*
または_all
を使用します。
リモートクラスタを検索するには、<cluster>:<target>
構文を使用します。 クラスタ間の検索を参照してください。 <field>
- (必須、文字列) 返す地理空間値を含むフィールド。
geo_point
またはgeo_shape
フィールドである必要があります。フィールドはドキュメント値が有効である必要があります。ネストされたフィールドであってはなりません。
ベクタタイルはジオメトリコレクションをネイティブにサポートしていません。geometrycollection
値がgeo_shape
フィールドにある場合、APIはコレクションの各要素に対してhits
レイヤー機能を返します。この動作は将来のリリースで変更される可能性があります。 <zoom>
- (必須、整数) 検索するベクタタイルのズームレベル。
0
-29
を受け入れます。 <x>
- (必須、整数) 検索するベクタタイルのX座標。
<y>
- (必須、整数) 検索するベクタタイルのY座標。
説明
内部的に、Elasticsearchはベクタタイル検索APIリクエストを含む検索に変換します:
geo_bounding_box
](/read/elasticsearch-8-15/d62c5e5b1f0116dc.md)クエリが<field>
に対して。クエリは<zoom>/<x>/<y>
タイルをバウンディングボックスとして使用します。geotile_grid
](/read/elasticsearch-8-15/3e65c414240cfd61.md)またはgeohex_grid
集約が<field>
に対して。grid_agg
パラメータが集約タイプを決定します。集約は<zoom>/<x>/<y>
タイルをバウンディングボックスとして使用します。- オプションで、
geo_bounds
集約が<field>
に対して。検索はexact_bounds
パラメータがtrue
の場合にのみこの集約を含みます。 - オプションパラメータ
with_labels
がtrueの場合、内部検索はジオメトリドキュメント値のgetLabelPosition
関数を呼び出す動的ランタイムフィールドを含みます。これにより、提案されたジオメトリラベルを含む新しいポイント機能の生成が可能になります。たとえば、マルチポリゴンには1つのラベルのみが付けられます。
たとえば、Elasticsearchはgrid_agg
引数がgeotile
で、exact_bounds
引数がtrue
のベクタタイル検索APIリクエストを次の検索に変換することがあります:
Python
resp = client.search(
index="my-index",
size=10000,
query={
"geo_bounding_box": {
"my-geo-field": {
"top_left": {
"lat": -40.979898069620134,
"lon": -45
},
"bottom_right": {
"lat": -66.51326044311186,
"lon": 0
}
}
}
},
aggregations={
"grid": {
"geotile_grid": {
"field": "my-geo-field",
"precision": 11,
"size": 65536,
"bounds": {
"top_left": {
"lat": -40.979898069620134,
"lon": -45
},
"bottom_right": {
"lat": -66.51326044311186,
"lon": 0
}
}
}
},
"bounds": {
"geo_bounds": {
"field": "my-geo-field",
"wrap_longitude": False
}
}
},
)
print(resp)
Js
const response = await client.search({
index: "my-index",
size: 10000,
query: {
geo_bounding_box: {
"my-geo-field": {
top_left: {
lat: -40.979898069620134,
lon: -45,
},
bottom_right: {
lat: -66.51326044311186,
lon: 0,
},
},
},
},
aggregations: {
grid: {
geotile_grid: {
field: "my-geo-field",
precision: 11,
size: 65536,
bounds: {
top_left: {
lat: -40.979898069620134,
lon: -45,
},
bottom_right: {
lat: -66.51326044311186,
lon: 0,
},
},
},
},
bounds: {
geo_bounds: {
field: "my-geo-field",
wrap_longitude: false,
},
},
},
});
console.log(response);
コンソール
GET my-index/_search
{
"size": 10000,
"query": {
"geo_bounding_box": {
"my-geo-field": {
"top_left": {
"lat": -40.979898069620134,
"lon": -45
},
"bottom_right": {
"lat": -66.51326044311186,
"lon": 0
}
}
}
},
"aggregations": {
"grid": {
"geotile_grid": {
"field": "my-geo-field",
"precision": 11,
"size": 65536,
"bounds": {
"top_left": {
"lat": -40.979898069620134,
"lon": -45
},
"bottom_right": {
"lat": -66.51326044311186,
"lon": 0
}
}
}
},
"bounds": {
"geo_bounds": {
"field": "my-geo-field",
"wrap_longitude": false
}
}
}
}
APIは結果をバイナリのMapboxベクタタイルとして返します。MapboxベクタタイルはGoogle Protobufs (PBF)としてエンコードされています。デフォルトでは、タイルには3つのレイヤーが含まれています:
hits
レイヤーは、<field>
値に対してgeo_bounding_box
クエリに一致する機能を含みます。aggs
レイヤーは、geotile_grid
またはgeohex_grid
の各セルに対して機能を含みます。このレイヤーは、一致するデータを持つセルの機能のみを含みます。meta
レイヤーは、次のものを含みます:- バウンディングボックスを含む機能。デフォルトでは、これはタイルのバウンディングボックスです。
geotile_grid
またはgeohex_grid
に対するサブ集約の値範囲。- 検索のメタデータ。
APIは、ズームレベルで表示できる機能のみを返します。たとえば、ポリゴン機能がそのズームレベルで面積を持たない場合、APIはそれを省略します。
APIはエラーをUTF-8エンコードされたJSONとして返します。
クエリパラメータ
このAPIに対して、クエリパラメータまたはリクエストボディパラメータとしていくつかのオプションを指定できます。両方のパラメータを指定した場合、クエリパラメータが優先されます。
exact_bounds
(オプション、ブール値)
false
の場合、meta
レイヤーの機能はタイルのバウンディングボックスです。デフォルトはfalse
です。true
の場合、meta
レイヤーの機能は、geo_bounds
集約から得られるバウンディングボックスです。集約は、<field>
値が<zoom>/<x>/<y>
タイルと交差し、wrap_longitude
がfalse
に設定されている場合に実行されます。結果のバウンディングボックスは、ベクタタイルよりも大きくなる可能性があります。extent
(オプション、整数) タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。デフォルトは
4096
です。buffer
(オプション、整数) タイルの外側のクリッピングバッファのサイズ(ピクセル単位)。これにより、レンダラーはタイルの範囲を超えて延びるジオメトリからのアウトラインアーティファクトを回避できます。デフォルトは
5
です。grid_agg
(オプション、文字列)
<field>
のグリッドを作成するために使用される集約。- `````geotile````` (デフォルト)
- [`````geotile_grid`````](/read/elasticsearch-8-15/3e65c414240cfd61.md)集約。
- `````geohex
geohex_grid
集約。
grid_precision
(オプション、整数)
grid_agg
のセルの精度レベル。0
-8
を受け入れます。デフォルトは8
です。0
の場合、結果にはaggs
レイヤーが含まれません。`````grid_agg`````が`````geotile`````の場合、`````aggs`````レイヤーのセルを低いズームレベルのタイルとして使用できます。`````grid_precision`````は、これらのセルを通じて利用可能な追加のズームレベルを表します。最終的な精度は次のように計算されます:
`````<zoom> + grid_precision
たとえば、
<zoom>
が7
で、grid_precision
が8
の場合、geotile_grid
集約は15
の精度を使用します。最大の最終精度は29
です。`````(2^grid_precision) x (2^grid_precision)
たとえば、
8
の値はタイルを256 x 256のセルのグリッドに分割します。aggs
レイヤーは、一致するデータを持つセルの機能のみを含みます。`````grid_agg`````が`````geohex`````の場合、Elasticsearchは`````<zoom>`````と`````grid_precision`````を使用して最終的な精度を次のように計算します:
`````<zoom> + grid_precision
この精度は、https://h3geo.org/docs/core-library/restable集約によって生成される六角形セルの[H3解像度]を決定します。次の表は、各精度のH3解像度を示します。
たとえば、<zoom>
が3
で、grid_precision
が3
の場合、精度は6
です。6
の精度では、六角形セルは2
のH3解像度を持ちます。<zoom>
が3
で、grid_precision
が4
の場合、精度は7
です。7
の精度では、六角形セルは3
のH3解像度を持ちます。
| 精度 | ユニークタイルビン | H3解像度 | ユニーク六角ビン | 比率 |
| :— | :— | :— | :— | :— |
| 1 | 4 | 0 | 122 | 30.5 |
| 2 | 16 | 0 | 122 | 7.625 |
| 3 | 64 | 1 | 842 | 13.15625 |
| 4 | 256 | 1 | 842 | 3.2890625 |
| 5 | 1024 | 2 | 5882 | 5.744140625 |
| 6 | 4096 | 2 | 5882 | 1.436035156 |
| 7 | 16384 | 3 | 41162 | 2.512329102 |
| 8 | 65536 | 3 | 41162 | 0.6280822754 |
| 9 | 262144 | 4 | 288122 | 1.099098206 |
| 10 | 1048576 | 4 | 288122 | 0.2747745514 |
| 11 | 4194304 | 5 | 2016842 | 0.4808526039 |
| 12 | 16777216 | 6 | 14117882 | 0.8414913416 |
| 13 | 67108864 | 6 | 14117882 | 0.2103728354 |
| 14 | 268435456 | 7 | 98825162 | 0.3681524172 |
| 15 | 1073741824 | 8 | 691776122 | 0.644266719 |
| 16 | 4294967296 | 8 | 691776122 | 0.1610666797 |
| 17 | 17179869184 | 9 | 4842432842 | 0.2818666889 |
| 18 | 68719476736 | 10 | 33897029882 | 0.4932667053 |
| 19 | 274877906944 | 11 | 237279209162 | 0.8632167343 |
| 20 | 1099511627776 | 11 | 237279209162 | 0.2158041836 |
| 21 | 4398046511104 | 12 | 1660954464122 | 0.3776573213 |
| 22 | 17592186044416 | 13 | 11626681248842 | 0.6609003122 |
| 23 | 70368744177664 | 13 | 11626681248842 | 0.165225078 |
| 24 | 281474976710656 | 14 | 81386768741882 | 0.2891438866 |
| 25 | 1125899906842620 | 15 | 569707381193162 | 0.5060018015 |
| 26 | 4503599627370500 | 15 | 569707381193162 | 0.1265004504 |
| 27 | 18014398509482000 | 15 | 569707381193162 | 0.03162511259 |
| 28 | 72057594037927900 | 15 | 569707381193162 | 0.007906278149 |
| 29 | 288230376151712000 | 15 | 569707381193162 | 0.001976569537 |
六角形セルはベクタタイル上で完全に整列しません。一部のセルは複数のベクタタイルと交差する可能性があります。各精度のH3解像度を計算するために、Elasticsearchは各解像度での六角形ビンの平均密度を、各ズームレベルでのタイルビンの平均密度と比較します。Elasticsearchは、対応するgeotile
密度に最も近いH3解像度を使用します。grid_type
(オプション、文字列)
aggs
レイヤーの機能のジオメトリタイプを決定します。aggs
レイヤーでは、各機能はグリッド内のセルを表します。- `````grid````` (デフォルト)
- 各機能はセルのジオメトリの`````Polygon`````です。`````grid_agg`````が`````geotile`````の場合、機能はセルのバウンディングボックスです。`````grid_agg`````が`````geohex`````の場合、機能は六角形セルの境界です。
- `````point
- 各機能はセルの重心である
Point
です。 centroid
- 各機能はセル内のデータの重心である
Point
です。複雑なジオメトリの場合、実際の重心はセルの外にある場合があります。この場合、機能はセル内の重心に最も近い点に設定されます。
size
(オプション、整数)
hits
レイヤーで返す機能の最大数。0
-10000
を受け入れます。デフォルトは10000
です。0
の場合、結果にはhits
レイヤーが含まれません。track_total_hits
(オプション、整数またはブール値) クエリに一致するヒットの正確な数をカウントします。デフォルトは
10000
です。true
の場合、正確なヒット数が返されますが、パフォーマンスに影響します。false
の場合、応答にはクエリに一致するヒットの総数が含まれません。with_labels
- (オプション、ブール値) trueの場合、ヒットと集約レイヤーには、元の機能の提案されたラベル位置を表す追加のポイント機能が含まれます。
Point
およびMultiPoint
機能には、選択されたポイントの1つがあります。Polygon
およびMultiPolygon
機能には、ポリゴン内にある場合は重心、またはソートされた三角形ツリーから選択されたポリゴン内の別のポイントが生成されます。LineString
機能も、三角形ツリーから選択されたおおよその中央点を提供します。- 集約結果は、各集約バケットに対して1つの中央点を提供します。
元の機能からのすべての属性も新しいラベル機能にコピーされます。さらに、新しい機能はタグ_mvt_label_position
を使用して区別可能です。
リクエストボディ
aggs
- (オプション、集約オブジェクト) サブ集約 の
grid_agg
用。次の集約タイプをサポートします:avg
boxplot
cardinality
extended stats
max
median absolute deviation
min
percentile
percentile-rank
stats
sum
value count
集約名は_mvt_
で始めることはできません。_mvt_
プレフィックスは内部集約用に予約されています。
exact_bounds
- (オプション、ブール値)
false
の場合、meta
レイヤーの機能はタイルのバウンディングボックスです。デフォルトはfalse
です。true
の場合、meta
レイヤーの機能は、geo_bounds
集約から得られるバウンディングボックスです。集約は、<field>
値が<zoom>/<x>/<y>
タイルと交差し、wrap_longitude
がfalse
に設定されている場合に実行されます。結果のバウンディングボックスは、ベクタタイルよりも大きくなる可能性があります。 extent
- (オプション、整数)タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。デフォルトは
4096
です。 buffer
- (オプション、整数)タイルの外側のクリッピングバッファのサイズ(ピクセル単位)。これにより、レンダラーはタイルの範囲を超えて延びるジオメトリからのアウトラインアーティファクトを回避できます。デフォルトは
5
です。 fields
- (オプション、文字列とオブジェクトの配列)
hits
レイヤーで返すフィールド。ワイルドカードをサポートしています (*
)。
このパラメータは 配列値 を持つフィールドをサポートしていません。配列値を持つフィールドは、一貫性のない結果を返す可能性があります。
配列内のフィールドは文字列またはオブジェクトとして指定できます。- `````field
- (必須、文字列)返すフィールド。ワイルドカード(
*
)をサポートします。 format
- (オプション、文字列)日付および地理空間フィールドの形式。他のフィールドデータ型はこのパラメータをサポートしていません。
date
およびdate_nanos
フィールドは日付形式を受け入れます。geo_point
およびgeo_shape
フィールドは次のものを受け入れます:geojson
(デフォルト)- GeoJSON
wkt
- Well Known Text
mvt(<spec>)
- バイナリ Mapbox ベクタタイル。APIはタイルをbase64エンコードされた文字列として返します。
<spec>
は<zoom>/<x>/<y>
形式で、2つのオプションのサフィックス:@<extent>
および/または:<buffer>
を持ちます。例えば、2/0/1
または2/0/1@4096:5
。mvt
パラメータ <zoom>
- (必須、整数)タイルのズームレベル。
0
-29
を受け入れます。 <x>
- (必須、整数)タイルのX座標。
<y>
- (必須、整数)タイルのY座標。
<extent>
- (オプション、整数)タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。デフォルトは
4096
です。 <buffer>
- (オプション、整数)タイルの外側のクリッピングバッファのサイズ(ピクセル単位)。これにより、レンダラーはタイルの範囲を超えて延びるジオメトリからのアウトラインアーティファクトを回避できます。デフォルトは
5
です。
grid_agg
- (オプション、文字列)
<field>
のグリッドを作成するために使用される集約。- `````geotile````` (デフォルト)
- [`````geotile_grid`````](/read/elasticsearch-8-15/3e65c414240cfd61.md)集約。
- `````geohex
geohex_grid
集約。
grid_precision
- (オプション、整数)
grid_agg
のセルの精度レベル。0
-8
を受け入れます。デフォルトは8
です。0
の場合、結果にはaggs
レイヤーが含まれません。
たとえば、`````grid_agg`````が`````geotile`````の場合、`````aggs`````レイヤーのセルを低いズームレベルのタイルとして使用できます。`````grid_precision`````は、これらのセルを通じて利用可能な追加のズームレベルを表します。最終的な精度は次のように計算されます:
`````<zoom> + grid_precision
<zoom>
が7
で、grid_precision
が8
の場合、geotile_grid
集約は15
の精度を使用します。最大の最終精度は29
です。
たとえば、`````(2^grid_precision) x (2^grid_precision)
8
の値はタイルを256 x 256のセルのグリッドに分割します。aggs
レイヤーは、一致するデータを持つセルの機能のみを含みます。
この精度は、`````grid_agg`````が`````geohex`````の場合、Elasticsearchは`````<zoom>`````と`````grid_precision`````を使用して最終的な精度を次のように計算します:
`````<zoom> + grid_precision
geohex
集約によって生成される 六角セルのH3解像度 を決定します。次の表は、各精度に対するH3解像度を示します。
たとえば、<zoom>
が3
で、grid_precision
が3
の場合、精度は6
です。6
の精度では、六角形セルは2
のH3解像度を持ちます。<zoom>
が3
で、grid_precision
が4
の場合、精度は7
です。7
の精度では、六角形セルは3
のH3解像度を持ちます。
| 精度 | ユニークタイルビン | H3解像度 | ユニーク六角ビン | 比率 |
| :— | :— | :— | :— | :— |
| 1 | 4 | 0 | 122 | 30.5 |
| 2 | 16 | 0 | 122 | 7.625 |
| 3 | 64 | 1 | 842 | 13.15625 |
| 4 | 256 | 1 | 842 | 3.2890625 |
| 5 | 1024 | 2 | 5882 | 5.744140625 |
| 6 | 4096 | 2 | 5882 | 1.436035156 |
| 7 | 16384 | 3 | 41162 | 2.512329102 |
| 8 | 65536 | 3 | 41162 | 0.6280822754 |
| 9 | 262144 | 4 | 288122 | 1.099098206 |
| 10 | 1048576 | 4 | 288122 | 0.2747745514 |
| 11 | 4194304 | 5 | 2016842 | 0.4808526039 |
| 12 | 16777216 | 6 | 14117882 | 0.8414913416 |
| 13 | 67108864 | 6 | 14117882 | 0.2103728354 |
| 14 | 268435456 | 7 | 98825162 | 0.3681524172 |
| 15 | 1073741824 | 8 | 691776122 | 0.644266719 |
| 16 | 4294967296 | 8 | 691776122 | 0.1610666797 |
| 17 | 17179869184 | 9 | 4842432842 | 0.2818666889 |
| 18 | 68719476736 | 10 | 33897029882 | 0.4932667053 |
| 19 | 274877906944 | 11 | 237279209162 | 0.8632167343 |
| 20 | 1099511627776 | 11 | 237279209162 | 0.2158041836 |
| 21 | 4398046511104 | 12 | 1660954464122 | 0.3776573213 |
| 22 | 17592186044416 | 13 | 11626681248842 | 0.6609003122 |
| 23 | 70368744177664 | 13 | 11626681248842 | 0.165225078 |
| 24 | 281474976710656 | 14 | 81386768741882 | 0.2891438866 |
| 25 | 1125899906842620 | 15 | 569707381193162 | 0.5060018015 |
| 26 | 4503599627370500 | 15 | 569707381193162 | 0.1265004504 |
| 27 | 18014398509482000 | 15 | 569707381193162 | 0.03162511259 |
| 28 | 72057594037927900 | 15 | 569707381193162 | 0.007906278149 |
| 29 | 288230376151712000 | 15 | 569707381193162 | 0.001976569537 |
六角形セルはベクタタイル上で完全に整列しません。一部のセルは複数のベクタタイルと交差する可能性があります。各精度のH3解像度を計算するために、Elasticsearchは各解像度での六角形ビンの平均密度を、各ズームレベルでのタイルビンの平均密度と比較します。Elasticsearchは、対応するgeotile
密度に最も近いH3解像度を使用します。 grid_type
- (オプション、文字列)
aggs
レイヤーの機能のジオメトリタイプを決定します。aggs
レイヤーでは、各機能はグリッド内のセルを表します。- `````grid````` (デフォルト)
- 各機能はセルのジオメトリの`````Polygon`````です。`````grid_agg`````が`````geotile`````の場合、機能はセルのバウンディングボックスです。`````grid_agg`````が`````geohex`````の場合、機能は六角形セルの境界です。
- `````point
- 各機能はセルの重心である
Point
です。 centroid
- 各機能はセル内のデータの重心である
Point
です。複雑なジオメトリの場合、実際の重心はセルの外にある場合があります。この場合、機能はセル内の重心に最も近い点に設定されます。
query
- (オプション、オブジェクト) クエリDSL は、検索のためにドキュメントをフィルタリングするために使用されます。
runtime_mappings
- (オプション、オブジェクトのオブジェクト) 検索リクエスト内の1つ以上のランタイムフィールドを定義します。これらのフィールドは、同じ名前のマッピングされたフィールドよりも優先されます。
- `````<field-name>
- (必須、オブジェクト) ランタイムフィールドの設定。キーはフィールド名です。
<field-name>
のプロパティtype
- (必須、文字列) フィールドタイプ、次のいずれかである必要があります:
boolean
composite
date
double
geo_point
ip
keyword
long
lookup
script
- (オプション、文字列) Painlessスクリプト は、クエリ時に実行されます。このスクリプトは、元の
_source
とマッピングされたフィールドおよびその値を含むドキュメントの全コンテキストにアクセスできます。
このスクリプトは、計算された値を返すためにemit
を含める必要があります。例えば:
Js
"script": "emit(doc['@timestamp'].value.dayOfWeekEnum.toString())"
size
- (オプション、整数)
hits
レイヤーで返す機能の最大数。0
-10000
を受け入れます。デフォルトは10000
です。0
の場合、結果にはhits
レイヤーが含まれません。 sort
- (オプション、ソートオブジェクトの配列)
hits
レイヤー内のフィーチャーをソートします。
デフォルトでは、APIは各フィーチャーのバウンディングボックスを計算します。このボックスの対角線の長さに基づいて、フィーチャーを最長から最短にソートします。 track_total_hits
- (オプション、整数またはブール値) クエリに一致するヒットの正確な数をカウントします。デフォルトは
10000
です。true
の場合、正確なヒット数が返されますが、パフォーマンスに影響します。false
の場合、応答にはクエリに一致するヒットの総数が含まれません。 with_labels
- (オプション、ブール値) trueの場合、ヒットと集約レイヤーには、元の機能の提案されたラベル位置を表す追加のポイント機能が含まれます。
Point
およびMultiPoint
機能には、選択されたポイントの1つがあります。Polygon
およびMultiPolygon
機能には、ポリゴン内にある場合は重心、またはソートされた三角形ツリーから選択されたポリゴン内の別のポイントが生成されます。LineString
フィーチャーは、三角形ツリー から選択されたおおよその中心点を提供します。- 集約結果は、各集約バケットに対して1つの中央点を提供します。
元のフィーチャーからのすべての属性も新しいラベルフィーチャーにコピーされます。さらに、新しいフィーチャーはタグ_mvt_label_position
を使用して区別可能です。
レスポンス
返されたベクタタイルには次のデータが含まれます:
hits
- (オブジェクト)
geo_bounding_box
クエリの結果を含むレイヤー。- `````extent
- (整数) タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。
version
- (整数) Mapbox ベクタタイル仕様 のメジャーバージョン番号。
features
- (オブジェクトの配列) フィーチャーの配列。
<field>
値ごとに、geo_bounding_box
クエリに一致するフィーチャーが含まれます。features
オブジェクトのプロパティgeometry
- (オブジェクト) フィーチャーのジオメトリ。
geometry
のプロパティ type
- (文字列) フィーチャーのジオメトリタイプ。有効な値は:
UNKNOWN
POINT
LINESTRING
POLYGON
coordinates
- (整数の配列または配列の配列) フィーチャーのタイル座標。
properties
- (オブジェクト) フィーチャーのプロパティ。
properties
のプロパティ _id
- (文字列) フィーチャーのドキュメント
_id
。 _index
- (文字列) フィーチャーのドキュメントのインデックス名。
<field>
- フィールド値。
fields
パラメータ内のフィールドに対してのみ返されます。 type
- (整数) フィーチャーのジオメトリタイプの識別子。値は:
1
(POINT
)2
(LINESTRING
)3
(POLYGON
)
aggs
- (オブジェクト)
grid_agg
集約およびそのサブ集約の結果を含むレイヤー。aggs
オブジェクトのプロパティextent
- (整数) タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。
version
- (整数) Mapbox ベクタタイル仕様 のメジャーバージョン番号。
features
- (オブジェクトの配列) グリッドの各セルに対するフィーチャーを含む配列。
features
オブジェクトのプロパティgeometry
- (オブジェクト) フィーチャーのジオメトリ。
geometry
のプロパティ type
- (文字列) フィーチャーのジオメトリタイプ。有効な値は:
UNKNOWN
POINT
LINESTRING
POLYGON
coordinates
- (整数の配列または配列の配列) フィーチャーのタイル座標。
properties
- (オブジェクト) フィーチャーのプロパティ。
properties
のプロパティ _count
- (長整数) セルのドキュメントのカウント。
_key
- (文字列) セルのバケットキー。形式は
<zoom>/<x>/<y>
。 <sub-aggregation>.value
- セルのサブ集約結果。
aggs
パラメータ内のサブ集約に対してのみ返されます。 type
- (整数) フィーチャーのジオメトリタイプの識別子。値は:
1
(POINT
)2
(LINESTRING
)3
(POLYGON
)
meta
- (オブジェクト) リクエストのメタデータを含むレイヤー。
meta
のプロパティextent
- (整数) タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。
version
- (整数) Mapbox ベクタタイル仕様 のメジャーバージョン番号。
features
- (オブジェクトの配列) バウンディングボックスのフィーチャーを含みます。
features
オブジェクトのプロパティgeometry
- (オブジェクト) フィーチャーのジオメトリ。
geometry
のプロパティ type
- (文字列) フィーチャーのジオメトリタイプ。有効な値は:
UNKNOWN
POINT
LINESTRING
POLYGON
coordinates
- (整数の配列または配列の配列) フィーチャーのタイル座標。
properties
- (オブジェクト) フィーチャーのプロパティ。
properties
のプロパティ _shards.failed
- (整数) 検索を実行できなかったシャードの数。検索APIの
shards
レスポンスプロパティを参照してください。 _shards.skipped
- (整数) 検索をスキップしたシャードの数。検索APIの
shards
レスポンスプロパティを参照してください。 _shards.successful
- (整数) 検索を正常に実行したシャードの数。検索APIの
shards
レスポンスプロパティを参照してください。 _shards.total
- (整数) クエリが必要なシャードの総数(未割り当てシャードを含む)。検索APIの
shards
レスポンスプロパティを参照してください。 aggregations._count.avg
- (浮動小数点)
_count
レイヤー内のフィーチャーの平均値。 aggregations._count.count
- (整数)
aggs
レイヤー内のフィーチャーのユニークな_count
値の数。 aggregations._count.max
- (浮動小数点)
aggs
レイヤー内のフィーチャーの最大_count
値。 aggregations._count.min
- (浮動小数点)
aggs
レイヤー内のフィーチャーの最小_count
値。 aggregations._count.sum
- (浮動小数点)
aggs
レイヤー内のフィーチャーの_count
値の合計。 aggregations.<sub-aggregation>.avg
- (浮動小数点) サブ集約の結果の平均値。
aggregations.<agg_name>.count
- (整数) サブ集約の結果からのユニークな値の数。
aggregations.<agg_name>.max
- (浮動小数点) サブ集約の結果からの最大値。
aggregations.<agg_name>.min
- (浮動小数点) サブ集約の結果からの最小値。
aggregations.<agg_name>.sum
- (浮動小数点) サブ集約の結果の合計。
hits.max_score
- (浮動小数点) 検索のヒットに対する最高のドキュメント
_score
。 hits.total.relation
- (文字列)
hits.total.value
が正確であるか下限であるかを示します。可能な値は:eq
- 正確
gte
- 下限
hits.total.value
- (整数) 検索のヒットの総数。
timed_out
- (ブール値)
true
の場合、検索は完了前にタイムアウトしました。結果は部分的または空である可能性があります。 took
- (整数) Elasticsearchが検索を実行するのにかかったミリ秒数。検索APIの
took
レスポンスプロパティを参照してください。 type
- (整数) フィーチャーのジオメトリタイプの識別子。値は:
1
(POINT
)2
(LINESTRING
)3
(POLYGON
)
例
次のリクエストは、museum
インデックスを作成し、いくつかの地理空間 location
値を追加します。
Python
resp = client.indices.create(
index="museums",
mappings={
"properties": {
"location": {
"type": "geo_point"
},
"name": {
"type": "keyword"
},
"price": {
"type": "long"
},
"included": {
"type": "boolean"
}
}
},
)
print(resp)
resp1 = client.bulk(
index="museums",
refresh=True,
operations=[
{
"index": {
"_id": "1"
}
},
{
"location": "POINT (4.912350 52.374081)",
"name": "NEMO Science Museum",
"price": 1750,
"included": True
},
{
"index": {
"_id": "2"
}
},
{
"location": "POINT (4.901618 52.369219)",
"name": "Museum Het Rembrandthuis",
"price": 1500,
"included": False
},
{
"index": {
"_id": "3"
}
},
{
"location": "POINT (4.914722 52.371667)",
"name": "Nederlands Scheepvaartmuseum",
"price": 1650,
"included": True
},
{
"index": {
"_id": "4"
}
},
{
"location": "POINT (4.914722 52.371667)",
"name": "Amsterdam Centre for Architecture",
"price": 0,
"included": True
}
],
)
print(resp1)
Ruby
response = client.indices.create(
index: 'museums',
body: {
mappings: {
properties: {
location: {
type: 'geo_point'
},
name: {
type: 'keyword'
},
price: {
type: 'long'
},
included: {
type: 'boolean'
}
}
}
}
)
puts response
response = client.bulk(
index: 'museums',
refresh: true,
body: [
{
index: {
_id: '1'
}
},
{
location: 'POINT (4.912350 52.374081)',
name: 'NEMO Science Museum',
price: 1750,
included: true
},
{
index: {
_id: '2'
}
},
{
location: 'POINT (4.901618 52.369219)',
name: 'Museum Het Rembrandthuis',
price: 1500,
included: false
},
{
index: {
_id: '3'
}
},
{
location: 'POINT (4.914722 52.371667)',
name: 'Nederlands Scheepvaartmuseum',
price: 1650,
included: true
},
{
index: {
_id: '4'
}
},
{
location: 'POINT (4.914722 52.371667)',
name: 'Amsterdam Centre for Architecture',
price: 0,
included: true
}
]
)
puts response
Js
const response = await client.indices.create({
index: "museums",
mappings: {
properties: {
location: {
type: "geo_point",
},
name: {
type: "keyword",
},
price: {
type: "long",
},
included: {
type: "boolean",
},
},
},
});
console.log(response);
const response1 = await client.bulk({
index: "museums",
refresh: "true",
operations: [
{
index: {
_id: "1",
},
},
{
location: "POINT (4.912350 52.374081)",
name: "NEMO Science Museum",
price: 1750,
included: true,
},
{
index: {
_id: "2",
},
},
{
location: "POINT (4.901618 52.369219)",
name: "Museum Het Rembrandthuis",
price: 1500,
included: false,
},
{
index: {
_id: "3",
},
},
{
location: "POINT (4.914722 52.371667)",
name: "Nederlands Scheepvaartmuseum",
price: 1650,
included: true,
},
{
index: {
_id: "4",
},
},
{
location: "POINT (4.914722 52.371667)",
name: "Amsterdam Centre for Architecture",
price: 0,
included: true,
},
],
});
console.log(response1);
コンソール
PUT museums
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
},
"name": {
"type": "keyword"
},
"price": {
"type": "long"
},
"included": {
"type": "boolean"
}
}
}
}
POST museums/_bulk?refresh
{ "index": { "_id": "1" } }
{ "location": "POINT (4.912350 52.374081)", "name": "NEMO Science Museum", "price": 1750, "included": true }
{ "index": { "_id": "2" } }
{ "location": "POINT (4.901618 52.369219)", "name": "Museum Het Rembrandthuis", "price": 1500, "included": false }
{ "index": { "_id": "3" } }
{ "location": "POINT (4.914722 52.371667)", "name": "Nederlands Scheepvaartmuseum", "price":1650, "included": true }
{ "index": { "_id": "4" } }
{ "location": "POINT (4.914722 52.371667)", "name": "Amsterdam Centre for Architecture", "price":0, "included": true }
次のリクエストは、location
値が 13/4207/2692
ベクタタイルと交差するインデックスを検索します。
Python
resp = client.search_mvt(
index="museums",
field="location",
zoom="13",
x="4207",
y="2692",
grid_agg="geotile",
grid_precision=2,
fields=[
"name",
"price"
],
query={
"term": {
"included": True
}
},
aggs={
"min_price": {
"min": {
"field": "price"
}
},
"max_price": {
"max": {
"field": "price"
}
},
"avg_price": {
"avg": {
"field": "price"
}
}
},
)
print(resp)
Js
const response = await client.searchMvt({
index: "museums",
field: "location",
zoom: 13,
x: 4207,
y: 2692,
grid_agg: "geotile",
grid_precision: 2,
fields: ["name", "price"],
query: {
term: {
included: true,
},
},
aggs: {
min_price: {
min: {
field: "price",
},
},
max_price: {
max: {
field: "price",
},
},
avg_price: {
avg: {
field: "price",
},
},
},
});
console.log(response);
コンソール
GET museums/_mvt/location/13/4207/2692
{
"grid_agg": "geotile",
"grid_precision": 2,
"fields": [
"name",
"price"
],
"query": {
"term": {
"included": true
}
},
"aggs": {
"min_price": {
"min": {
"field": "price"
}
},
"max_price": {
"max": {
"field": "price"
}
},
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
APIは結果をバイナリベクタタイルとして返します。JSONにデコードされると、タイルには次のデータが含まれます:
Js
{
"hits": {
"extent": 4096,
"version": 2,
"features": [
{
"geometry": {
"type": "Point",
"coordinates": [
3208,
3864
]
},
"properties": {
"_id": "1",
"_index": "museums",
"name": "NEMO Science Museum",
"price": 1750
},
"type": 1
},
{
"geometry": {
"type": "Point",
"coordinates": [
3429,
3496
]
},
"properties": {
"_id": "3",
"_index": "museums",
"name": "Nederlands Scheepvaartmuseum",
"price": 1650
},
"type": 1
},
{
"geometry": {
"type": "Point",
"coordinates": [
3429,
3496
]
},
"properties": {
"_id": "4",
"_index": "museums",
"name": "Amsterdam Centre for Architecture",
"price": 0
},
"type": 1
}
]
},
"aggs": {
"extent": 4096,
"version": 2,
"features": [
{
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
3072,
3072
],
[
4096,
3072
],
[
4096,
4096
],
[
3072,
4096
],
[
3072,
3072
]
]
]
},
"properties": {
"_count": 3,
"max_price.value": 1750.0,
"min_price.value": 0.0,
"avg_price.value": 1133.3333333333333
},
"type": 3
}
]
},
"meta": {
"extent": 4096,
"version": 2,
"features": [
{
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
0,
0
],
[
4096,
0
],
[
4096,
4096
],
[
0,
4096
],
[
0,
0
]
]
]
},
"properties": {
"_shards.failed": 0,
"_shards.skipped": 0,
"_shards.successful": 1,
"_shards.total": 1,
"aggregations._count.avg": 3.0,
"aggregations._count.count": 1,
"aggregations._count.max": 3.0,
"aggregations._count.min": 3.0,
"aggregations._count.sum": 3.0,
"aggregations.avg_price.avg": 1133.3333333333333,
"aggregations.avg_price.count": 1,
"aggregations.avg_price.max": 1133.3333333333333,
"aggregations.avg_price.min": 1133.3333333333333,
"aggregations.avg_price.sum": 1133.3333333333333,
"aggregations.max_price.avg": 1750.0,
"aggregations.max_price.count": 1,
"aggregations.max_price.max": 1750.0,
"aggregations.max_price.min": 1750.0,
"aggregations.max_price.sum": 1750.0,
"aggregations.min_price.avg": 0.0,
"aggregations.min_price.count": 1,
"aggregations.min_price.max": 0.0,
"aggregations.min_price.min": 0.0,
"aggregations.min_price.sum": 0.0,
"hits.max_score": 0.0,
"hits.total.relation": "eq",
"hits.total.value": 3,
"timed_out": false,
"took": 2
},
"type": 3
}
]
}
}