ベクタタイル検索API

地理空間値のためにベクタタイルを検索します。結果はバイナリの Mapboxベクタタイル として返されます。

Python

  1. resp = client.search_mvt(
  2. index="my-index",
  3. field="my-geo-field",
  4. zoom="15",
  5. x="5271",
  6. y="12710",
  7. )
  8. print(resp)

Js

  1. const response = await client.searchMvt({
  2. index: "my-index",
  3. field: "my-geo-field",
  4. zoom: 15,
  5. x: 5271,
  6. y: 12710,
  7. });
  8. console.log(response);

コンソール

  1. 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

  1. resp = client.search(
  2. index="my-index",
  3. size=10000,
  4. query={
  5. "geo_bounding_box": {
  6. "my-geo-field": {
  7. "top_left": {
  8. "lat": -40.979898069620134,
  9. "lon": -45
  10. },
  11. "bottom_right": {
  12. "lat": -66.51326044311186,
  13. "lon": 0
  14. }
  15. }
  16. }
  17. },
  18. aggregations={
  19. "grid": {
  20. "geotile_grid": {
  21. "field": "my-geo-field",
  22. "precision": 11,
  23. "size": 65536,
  24. "bounds": {
  25. "top_left": {
  26. "lat": -40.979898069620134,
  27. "lon": -45
  28. },
  29. "bottom_right": {
  30. "lat": -66.51326044311186,
  31. "lon": 0
  32. }
  33. }
  34. }
  35. },
  36. "bounds": {
  37. "geo_bounds": {
  38. "field": "my-geo-field",
  39. "wrap_longitude": False
  40. }
  41. }
  42. },
  43. )
  44. print(resp)

Js

  1. const response = await client.search({
  2. index: "my-index",
  3. size: 10000,
  4. query: {
  5. geo_bounding_box: {
  6. "my-geo-field": {
  7. top_left: {
  8. lat: -40.979898069620134,
  9. lon: -45,
  10. },
  11. bottom_right: {
  12. lat: -66.51326044311186,
  13. lon: 0,
  14. },
  15. },
  16. },
  17. },
  18. aggregations: {
  19. grid: {
  20. geotile_grid: {
  21. field: "my-geo-field",
  22. precision: 11,
  23. size: 65536,
  24. bounds: {
  25. top_left: {
  26. lat: -40.979898069620134,
  27. lon: -45,
  28. },
  29. bottom_right: {
  30. lat: -66.51326044311186,
  31. lon: 0,
  32. },
  33. },
  34. },
  35. },
  36. bounds: {
  37. geo_bounds: {
  38. field: "my-geo-field",
  39. wrap_longitude: false,
  40. },
  41. },
  42. },
  43. });
  44. console.log(response);

コンソール

  1. GET my-index/_search
  2. {
  3. "size": 10000,
  4. "query": {
  5. "geo_bounding_box": {
  6. "my-geo-field": {
  7. "top_left": {
  8. "lat": -40.979898069620134,
  9. "lon": -45
  10. },
  11. "bottom_right": {
  12. "lat": -66.51326044311186,
  13. "lon": 0
  14. }
  15. }
  16. }
  17. },
  18. "aggregations": {
  19. "grid": {
  20. "geotile_grid": {
  21. "field": "my-geo-field",
  22. "precision": 11,
  23. "size": 65536,
  24. "bounds": {
  25. "top_left": {
  26. "lat": -40.979898069620134,
  27. "lon": -45
  28. },
  29. "bottom_right": {
  30. "lat": -66.51326044311186,
  31. "lon": 0
  32. }
  33. }
  34. }
  35. },
  36. "bounds": {
  37. "geo_bounds": {
  38. "field": "my-geo-field",
  39. "wrap_longitude": false
  40. }
  41. }
  42. }
  43. }

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_longitudefalseに設定されている場合に実行されます。結果のバウンディングボックスは、ベクタタイルよりも大きくなる可能性があります。

  • extent

  • (オプション、整数) タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。デフォルトは4096です。

  • buffer

  • (オプション、整数) タイルの外側のクリッピングバッファのサイズ(ピクセル単位)。これにより、レンダラーはタイルの範囲を超えて延びるジオメトリからのアウトラインアーティファクトを回避できます。デフォルトは5です。

  • grid_agg

  • (オプション、文字列) <field>のグリッドを作成するために使用される集約。

    1. - `````geotile````` (デフォルト)
    2. - [`````geotile_grid`````](/read/elasticsearch-8-15/3e65c414240cfd61.md)集約。
    3. - `````geohex
  • grid_precision

  • (オプション、整数) grid_aggのセルの精度レベル。0-8を受け入れます。デフォルトは8です。0の場合、結果にはaggsレイヤーが含まれません。

    1. `````grid_agg``````````geotile`````の場合、`````aggs`````レイヤーのセルを低いズームレベルのタイルとして使用できます。`````grid_precision`````は、これらのセルを通じて利用可能な追加のズームレベルを表します。最終的な精度は次のように計算されます:
    2. `````<zoom> + grid_precision

    たとえば、<zoom>7で、grid_precision8の場合、geotile_grid集約は15の精度を使用します。最大の最終精度は29です。

    1. `````(2^grid_precision) x (2^grid_precision)

    たとえば、8の値はタイルを256 x 256のセルのグリッドに分割します。aggsレイヤーは、一致するデータを持つセルの機能のみを含みます。

    1. `````grid_agg``````````geohex`````の場合、Elasticsearch`````<zoom>``````````grid_precision`````を使用して最終的な精度を次のように計算します:
    2. `````<zoom> + grid_precision

    この精度は、https://h3geo.org/docs/core-library/restable集約によって生成される六角形セルの[H3解像度]を決定します。次の表は、各精度のH3解像度を示します。
    たとえば、<zoom>3で、grid_precision3の場合、精度は6です。6の精度では、六角形セルは2のH3解像度を持ちます。<zoom>3で、grid_precision4の場合、精度は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レイヤーでは、各機能はグリッド内のセルを表します。

    1. - `````grid````` (デフォルト)
    2. - 各機能はセルのジオメトリの`````Polygon`````です。`````grid_agg``````````geotile`````の場合、機能はセルのバウンディングボックスです。`````grid_agg``````````geohex`````の場合、機能は六角形セルの境界です。
    3. - `````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 用。次の集約タイプをサポートします:
  • exact_bounds
  • (オプション、ブール値) falseの場合、metaレイヤーの機能はタイルのバウンディングボックスです。デフォルトはfalseです。
    trueの場合、metaレイヤーの機能は、geo_bounds集約から得られるバウンディングボックスです。集約は、<field>値が<zoom>/<x>/<y>タイルと交差し、wrap_longitudefalseに設定されている場合に実行されます。結果のバウンディングボックスは、ベクタタイルよりも大きくなる可能性があります。
  • extent
  • (オプション、整数)タイルの一辺のサイズ(ピクセル単位)。ベクタタイルは、等しい辺を持つ正方形です。デフォルトは4096です。
  • buffer
  • (オプション、整数)タイルの外側のクリッピングバッファのサイズ(ピクセル単位)。これにより、レンダラーはタイルの範囲を超えて延びるジオメトリからのアウトラインアーティファクトを回避できます。デフォルトは5です。
  • fields
  • (オプション、文字列とオブジェクトの配列) hits レイヤーで返すフィールド。ワイルドカードをサポートしています (*)。
    このパラメータは 配列値 を持つフィールドをサポートしていません。配列値を持つフィールドは、一貫性のない結果を返す可能性があります。
    配列内のフィールドは文字列またはオブジェクトとして指定できます。
    1. - `````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>のグリッドを作成するために使用される集約。
    1. - `````geotile````` (デフォルト)
    2. - [`````geotile_grid`````](/read/elasticsearch-8-15/3e65c414240cfd61.md)集約。
    3. - `````geohex
  • grid_precision
  • (オプション、整数) grid_aggのセルの精度レベル。0-8を受け入れます。デフォルトは8です。0の場合、結果にはaggsレイヤーが含まれません。
    1. `````grid_agg``````````geotile`````の場合、`````aggs`````レイヤーのセルを低いズームレベルのタイルとして使用できます。`````grid_precision`````は、これらのセルを通じて利用可能な追加のズームレベルを表します。最終的な精度は次のように計算されます:
    2. `````<zoom> + grid_precision
    たとえば、<zoom>7で、grid_precision8の場合、geotile_grid集約は15の精度を使用します。最大の最終精度は29です。
    1. `````(2^grid_precision) x (2^grid_precision)
    たとえば、8の値はタイルを256 x 256のセルのグリッドに分割します。aggsレイヤーは、一致するデータを持つセルの機能のみを含みます。
    1. `````grid_agg``````````geohex`````の場合、Elasticsearch`````<zoom>``````````grid_precision`````を使用して最終的な精度を次のように計算します:
    2. `````<zoom> + grid_precision
    この精度は、geohex 集約によって生成される 六角セルのH3解像度 を決定します。次の表は、各精度に対するH3解像度を示します。
    たとえば、<zoom>3で、grid_precision3の場合、精度は6です。6の精度では、六角形セルは2のH3解像度を持ちます。<zoom>3で、grid_precision4の場合、精度は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レイヤーでは、各機能はグリッド内のセルを表します。
    1. - `````grid````` (デフォルト)
    2. - 各機能はセルのジオメトリの`````Polygon`````です。`````grid_agg``````````geotile`````の場合、機能はセルのバウンディングボックスです。`````grid_agg``````````geohex`````の場合、機能は六角形セルの境界です。
    3. - `````point
    • 各機能はセルの重心であるPointです。
    • centroid
    • 各機能はセル内のデータの重心であるPointです。複雑なジオメトリの場合、実際の重心はセルの外にある場合があります。この場合、機能はセル内の重心に最も近い点に設定されます。
  • query
  • (オプション、オブジェクト) クエリDSL は、検索のためにドキュメントをフィルタリングするために使用されます。
  • runtime_mappings
  • (オプション、オブジェクトのオブジェクト) 検索リクエスト内の1つ以上のランタイムフィールドを定義します。これらのフィールドは、同じ名前のマッピングされたフィールドよりも優先されます。
    1. - `````<field-name>
    • (必須、オブジェクト) ランタイムフィールドの設定。キーはフィールド名です。
      <field-name> のプロパティ
      • type
      • (必須、文字列) フィールドタイプ、次のいずれかである必要があります:
      • boolean
      • composite
      • date
      • double
      • geo_point
      • ip
      • keyword
      • long
      • lookup
      • script
      • (オプション、文字列) Painlessスクリプト は、クエリ時に実行されます。このスクリプトは、元の _source とマッピングされたフィールドおよびその値を含むドキュメントの全コンテキストにアクセスできます。
        このスクリプトは、計算された値を返すために emit を含める必要があります。例えば:

Js

  1. "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 クエリの結果を含むレイヤー。
    1. - `````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

  1. resp = client.indices.create(
  2. index="museums",
  3. mappings={
  4. "properties": {
  5. "location": {
  6. "type": "geo_point"
  7. },
  8. "name": {
  9. "type": "keyword"
  10. },
  11. "price": {
  12. "type": "long"
  13. },
  14. "included": {
  15. "type": "boolean"
  16. }
  17. }
  18. },
  19. )
  20. print(resp)
  21. resp1 = client.bulk(
  22. index="museums",
  23. refresh=True,
  24. operations=[
  25. {
  26. "index": {
  27. "_id": "1"
  28. }
  29. },
  30. {
  31. "location": "POINT (4.912350 52.374081)",
  32. "name": "NEMO Science Museum",
  33. "price": 1750,
  34. "included": True
  35. },
  36. {
  37. "index": {
  38. "_id": "2"
  39. }
  40. },
  41. {
  42. "location": "POINT (4.901618 52.369219)",
  43. "name": "Museum Het Rembrandthuis",
  44. "price": 1500,
  45. "included": False
  46. },
  47. {
  48. "index": {
  49. "_id": "3"
  50. }
  51. },
  52. {
  53. "location": "POINT (4.914722 52.371667)",
  54. "name": "Nederlands Scheepvaartmuseum",
  55. "price": 1650,
  56. "included": True
  57. },
  58. {
  59. "index": {
  60. "_id": "4"
  61. }
  62. },
  63. {
  64. "location": "POINT (4.914722 52.371667)",
  65. "name": "Amsterdam Centre for Architecture",
  66. "price": 0,
  67. "included": True
  68. }
  69. ],
  70. )
  71. print(resp1)

Ruby

  1. response = client.indices.create(
  2. index: 'museums',
  3. body: {
  4. mappings: {
  5. properties: {
  6. location: {
  7. type: 'geo_point'
  8. },
  9. name: {
  10. type: 'keyword'
  11. },
  12. price: {
  13. type: 'long'
  14. },
  15. included: {
  16. type: 'boolean'
  17. }
  18. }
  19. }
  20. }
  21. )
  22. puts response
  23. response = client.bulk(
  24. index: 'museums',
  25. refresh: true,
  26. body: [
  27. {
  28. index: {
  29. _id: '1'
  30. }
  31. },
  32. {
  33. location: 'POINT (4.912350 52.374081)',
  34. name: 'NEMO Science Museum',
  35. price: 1750,
  36. included: true
  37. },
  38. {
  39. index: {
  40. _id: '2'
  41. }
  42. },
  43. {
  44. location: 'POINT (4.901618 52.369219)',
  45. name: 'Museum Het Rembrandthuis',
  46. price: 1500,
  47. included: false
  48. },
  49. {
  50. index: {
  51. _id: '3'
  52. }
  53. },
  54. {
  55. location: 'POINT (4.914722 52.371667)',
  56. name: 'Nederlands Scheepvaartmuseum',
  57. price: 1650,
  58. included: true
  59. },
  60. {
  61. index: {
  62. _id: '4'
  63. }
  64. },
  65. {
  66. location: 'POINT (4.914722 52.371667)',
  67. name: 'Amsterdam Centre for Architecture',
  68. price: 0,
  69. included: true
  70. }
  71. ]
  72. )
  73. puts response

Js

  1. const response = await client.indices.create({
  2. index: "museums",
  3. mappings: {
  4. properties: {
  5. location: {
  6. type: "geo_point",
  7. },
  8. name: {
  9. type: "keyword",
  10. },
  11. price: {
  12. type: "long",
  13. },
  14. included: {
  15. type: "boolean",
  16. },
  17. },
  18. },
  19. });
  20. console.log(response);
  21. const response1 = await client.bulk({
  22. index: "museums",
  23. refresh: "true",
  24. operations: [
  25. {
  26. index: {
  27. _id: "1",
  28. },
  29. },
  30. {
  31. location: "POINT (4.912350 52.374081)",
  32. name: "NEMO Science Museum",
  33. price: 1750,
  34. included: true,
  35. },
  36. {
  37. index: {
  38. _id: "2",
  39. },
  40. },
  41. {
  42. location: "POINT (4.901618 52.369219)",
  43. name: "Museum Het Rembrandthuis",
  44. price: 1500,
  45. included: false,
  46. },
  47. {
  48. index: {
  49. _id: "3",
  50. },
  51. },
  52. {
  53. location: "POINT (4.914722 52.371667)",
  54. name: "Nederlands Scheepvaartmuseum",
  55. price: 1650,
  56. included: true,
  57. },
  58. {
  59. index: {
  60. _id: "4",
  61. },
  62. },
  63. {
  64. location: "POINT (4.914722 52.371667)",
  65. name: "Amsterdam Centre for Architecture",
  66. price: 0,
  67. included: true,
  68. },
  69. ],
  70. });
  71. console.log(response1);

コンソール

  1. PUT museums
  2. {
  3. "mappings": {
  4. "properties": {
  5. "location": {
  6. "type": "geo_point"
  7. },
  8. "name": {
  9. "type": "keyword"
  10. },
  11. "price": {
  12. "type": "long"
  13. },
  14. "included": {
  15. "type": "boolean"
  16. }
  17. }
  18. }
  19. }
  20. POST museums/_bulk?refresh
  21. { "index": { "_id": "1" } }
  22. { "location": "POINT (4.912350 52.374081)", "name": "NEMO Science Museum", "price": 1750, "included": true }
  23. { "index": { "_id": "2" } }
  24. { "location": "POINT (4.901618 52.369219)", "name": "Museum Het Rembrandthuis", "price": 1500, "included": false }
  25. { "index": { "_id": "3" } }
  26. { "location": "POINT (4.914722 52.371667)", "name": "Nederlands Scheepvaartmuseum", "price":1650, "included": true }
  27. { "index": { "_id": "4" } }
  28. { "location": "POINT (4.914722 52.371667)", "name": "Amsterdam Centre for Architecture", "price":0, "included": true }

次のリクエストは、location 値が 13/4207/2692 ベクタタイルと交差するインデックスを検索します。

Python

  1. resp = client.search_mvt(
  2. index="museums",
  3. field="location",
  4. zoom="13",
  5. x="4207",
  6. y="2692",
  7. grid_agg="geotile",
  8. grid_precision=2,
  9. fields=[
  10. "name",
  11. "price"
  12. ],
  13. query={
  14. "term": {
  15. "included": True
  16. }
  17. },
  18. aggs={
  19. "min_price": {
  20. "min": {
  21. "field": "price"
  22. }
  23. },
  24. "max_price": {
  25. "max": {
  26. "field": "price"
  27. }
  28. },
  29. "avg_price": {
  30. "avg": {
  31. "field": "price"
  32. }
  33. }
  34. },
  35. )
  36. print(resp)

Js

  1. const response = await client.searchMvt({
  2. index: "museums",
  3. field: "location",
  4. zoom: 13,
  5. x: 4207,
  6. y: 2692,
  7. grid_agg: "geotile",
  8. grid_precision: 2,
  9. fields: ["name", "price"],
  10. query: {
  11. term: {
  12. included: true,
  13. },
  14. },
  15. aggs: {
  16. min_price: {
  17. min: {
  18. field: "price",
  19. },
  20. },
  21. max_price: {
  22. max: {
  23. field: "price",
  24. },
  25. },
  26. avg_price: {
  27. avg: {
  28. field: "price",
  29. },
  30. },
  31. },
  32. });
  33. console.log(response);

コンソール

  1. GET museums/_mvt/location/13/4207/2692
  2. {
  3. "grid_agg": "geotile",
  4. "grid_precision": 2,
  5. "fields": [
  6. "name",
  7. "price"
  8. ],
  9. "query": {
  10. "term": {
  11. "included": true
  12. }
  13. },
  14. "aggs": {
  15. "min_price": {
  16. "min": {
  17. "field": "price"
  18. }
  19. },
  20. "max_price": {
  21. "max": {
  22. "field": "price"
  23. }
  24. },
  25. "avg_price": {
  26. "avg": {
  27. "field": "price"
  28. }
  29. }
  30. }
  31. }

APIは結果をバイナリベクタタイルとして返します。JSONにデコードされると、タイルには次のデータが含まれます:

Js

  1. {
  2. "hits": {
  3. "extent": 4096,
  4. "version": 2,
  5. "features": [
  6. {
  7. "geometry": {
  8. "type": "Point",
  9. "coordinates": [
  10. 3208,
  11. 3864
  12. ]
  13. },
  14. "properties": {
  15. "_id": "1",
  16. "_index": "museums",
  17. "name": "NEMO Science Museum",
  18. "price": 1750
  19. },
  20. "type": 1
  21. },
  22. {
  23. "geometry": {
  24. "type": "Point",
  25. "coordinates": [
  26. 3429,
  27. 3496
  28. ]
  29. },
  30. "properties": {
  31. "_id": "3",
  32. "_index": "museums",
  33. "name": "Nederlands Scheepvaartmuseum",
  34. "price": 1650
  35. },
  36. "type": 1
  37. },
  38. {
  39. "geometry": {
  40. "type": "Point",
  41. "coordinates": [
  42. 3429,
  43. 3496
  44. ]
  45. },
  46. "properties": {
  47. "_id": "4",
  48. "_index": "museums",
  49. "name": "Amsterdam Centre for Architecture",
  50. "price": 0
  51. },
  52. "type": 1
  53. }
  54. ]
  55. },
  56. "aggs": {
  57. "extent": 4096,
  58. "version": 2,
  59. "features": [
  60. {
  61. "geometry": {
  62. "type": "Polygon",
  63. "coordinates": [
  64. [
  65. [
  66. 3072,
  67. 3072
  68. ],
  69. [
  70. 4096,
  71. 3072
  72. ],
  73. [
  74. 4096,
  75. 4096
  76. ],
  77. [
  78. 3072,
  79. 4096
  80. ],
  81. [
  82. 3072,
  83. 3072
  84. ]
  85. ]
  86. ]
  87. },
  88. "properties": {
  89. "_count": 3,
  90. "max_price.value": 1750.0,
  91. "min_price.value": 0.0,
  92. "avg_price.value": 1133.3333333333333
  93. },
  94. "type": 3
  95. }
  96. ]
  97. },
  98. "meta": {
  99. "extent": 4096,
  100. "version": 2,
  101. "features": [
  102. {
  103. "geometry": {
  104. "type": "Polygon",
  105. "coordinates": [
  106. [
  107. [
  108. 0,
  109. 0
  110. ],
  111. [
  112. 4096,
  113. 0
  114. ],
  115. [
  116. 4096,
  117. 4096
  118. ],
  119. [
  120. 0,
  121. 4096
  122. ],
  123. [
  124. 0,
  125. 0
  126. ]
  127. ]
  128. ]
  129. },
  130. "properties": {
  131. "_shards.failed": 0,
  132. "_shards.skipped": 0,
  133. "_shards.successful": 1,
  134. "_shards.total": 1,
  135. "aggregations._count.avg": 3.0,
  136. "aggregations._count.count": 1,
  137. "aggregations._count.max": 3.0,
  138. "aggregations._count.min": 3.0,
  139. "aggregations._count.sum": 3.0,
  140. "aggregations.avg_price.avg": 1133.3333333333333,
  141. "aggregations.avg_price.count": 1,
  142. "aggregations.avg_price.max": 1133.3333333333333,
  143. "aggregations.avg_price.min": 1133.3333333333333,
  144. "aggregations.avg_price.sum": 1133.3333333333333,
  145. "aggregations.max_price.avg": 1750.0,
  146. "aggregations.max_price.count": 1,
  147. "aggregations.max_price.max": 1750.0,
  148. "aggregations.max_price.min": 1750.0,
  149. "aggregations.max_price.sum": 1750.0,
  150. "aggregations.min_price.avg": 0.0,
  151. "aggregations.min_price.count": 1,
  152. "aggregations.min_price.max": 0.0,
  153. "aggregations.min_price.min": 0.0,
  154. "aggregations.min_price.sum": 0.0,
  155. "hits.max_score": 0.0,
  156. "hits.total.relation": "eq",
  157. "hits.total.value": 3,
  158. "timed_out": false,
  159. "took": 2
  160. },
  161. "type": 3
  162. }
  163. ]
  164. }
  165. }