この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 15452|答える: 0

[出典] ElasticSearch(geo_point)におけるJavaジオロケーション情報

[リンクをコピー]
掲載地 2019/01/09 17:25:39 | | |
簡単な紹介

ESは一般的な基本データ型に加え、位置情報を記録しるデータ型もサポートしていることがわかっています。 ESでは、ジオロケーション情報を記録するデータにはgeo_shapとgeo_pointの2種類があり、以下でgeo_pointタイプを簡単に紹介します
geo_point複数のデータ転送方法をサポートしています:

ストリング
位置:緯度+""、+ロン

配列
位置: {"lat": ...,"lon": ...}

目的
場所:[経緯度]


注:おそらく誰もが少なくとも一度はこの穴を踏んだことがあるでしょう == 地理座標は文字列で表す場合、緯度が先で経度が最後(「緯度、経度」)、配列は逆の形で表され、経度が先で緯度が最後([経度、緯度])です。 実際、Elasticesearchでは文字列形式でも配列形式でも、緯度が先で経度が最後です。 しかし、初期の頃はGeoJSONのフォーマット仕様に適応するために、配列フォームの表現が調整されました。 これは公式ウェブサイトで説明されています。
一般的にgeo_pointタイプには以下のクエリ要件があります

距離クエリ
中心点から範囲内の点を見つけてください

距離範囲クエリ(非推奨)
新バージョンのESでは、中心点の範囲内のクエリはAPIから削除されているため、ここではあまり詳しく説明しません
境界問い
指定された点からなる長方形内の点を見つける

ポリゴンクエリ
複数の点からなる多角形の点を見つける

Javaで異なるクエリに対応するSearchSourceBuilderファクトリーは以下の通りです:


サービスは以下の通りです:

コントローラ層のコードは以下の通りです:

[1]. 使い方

geo_point型を使う前に、まずインデックスを作成する際に、フィールドをgeo_point型として明示的に指定してください。以下のように:


上記ではrestrauntという新しいインデックスを作成し、そのマッピングファイルでは「location」フィールドの種類を「geo_point」と明示的に指定しています

[2] データを用意してください

キバナについては以下のデータを用意しています。


上記の7つのデータを用意しており、その後クエリを実行してインターフェースがニーズを満たしているか確認します。

[3] 調査

クエリ距離


他の2つの調査も上記と同じです。




先の:ElasticsearchParseException[フィールドは[緯度]、[lon]、または[geohash]のいずれかでなければなりません]
次に:Discuzはアプリをインストールし、「データが認識されません。返品してください」という回避策を提示します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com