ESの場所クエリを学ぶ容易にするために、ここでのテストデータのいくつかの地理的座標を用意し、各データは、都市名と二つのフィールドの地理座標が含まれています。まず、geo.jsonのファイルに次を保存します。
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "1"}}
{ "都市": "北京"、 "localtion": "40.019559,116.312282"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "2"}}
{ "街": "乌鲁木齐"、 "localtion": "43.863737,87.53891"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "3"}}
{ "街": "西安"、 "localtion": "34.43376,108.879774"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "4"}}
{ "街": "郑州"、 "localtion": "34.76845,113.589482"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "5"}}
{ "街": "杭州"、 "localtion": "30.345351,120.102125"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "6"}}
{ "街": "济南"、 "localtion": "36.688506,117.158558"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "7"}}
{ "街": "上海"、 "localtion": "31.298035,121.426731"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "8"}}
{ "街": "武汉"、 "localtion": "30.632158,114.28858"}
{ "インデックス":{ "_インデックス": "GEO"、 "_ ID": "9"}}
{ "街": "广州"、 "localtion": "23.150725,113.221536"}
その後、インデックスを作成します。
PUT地理
{
"設定": {
"number_of_shards": "1"、
"number_of_replicas": "0"
}、
"マッピング":{
"プロパティ": {
"市": {
「タイプ」:「キーワード」
}、
"場所":{
"タイプ": "geo_point"
}
}
}
}
その後、実行します。
$カール-X POST "はlocalhost:9200 / _bulkかわいい?" -H 'のContent-Type:アプリケーション/ JSON' --data-バイナリ@ geo.json
1
1.半径クエリ(geo_distanceクエリ)
geo_distanceクエリは、指定した半径内の文書の地理的中心点を見つけることができます。次のような天津市から500キロ内のクエリとして、検索結果は、北京、済南に戻ります、コマンドは次のとおりです。
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_distance":{
「距離」:「500キロ」、
"ロケーション":{
"LAT": "38.993443"、
"LON": "117.158558"
}
}
}
}
}
}
天津からの距離によって並べ替え:
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_distance":{
「距離」:「500キロ」、
"場所":{
"LAT": "38.993443"、
"LON": "117.158558"
}
}
}
}
}、
"ソート":[
{
"_geo_distance":{
"場所":{
"LAT": "38.993443"、
"LON": "117.158558"
}、
「単位」:「キロ」
}
}
]
}
2.長方形(geo_bounding_boxクエリ)内のクエリを指定します
地理座標を照会するように構成geo_bounding_boxクエリは、指定した矩形に収まります。クエリの両方垂直(経度)で行わ銀川と南昌点に示すように矩形が、二つの点で定義され、平行線(寸法)は、それぞれ、交差線は矩形領域を形成するには、西安に照会することができます、鄭州、武漢。
[チェーンが失敗した外に、ソースステーションは、画像を保存することが推奨され、セキュリティチェーン機構を有していてもよいピクチャー・ダンプが(IMG-ZiJZ1UCp-1578904421240)(D:\作業\ elasticsearch \ geo_bouding_box.png)直接ダウンアップロード]
左と右の角問い合わせ
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_bounding_box":{
"ロケーション":{
"左上":{
"LAT": "38.532499"、
"LON": "106.193769"
}、
"右下":{
"LON": "115.907542"
}
}
}
}
}
}
}
お問い合わせの左下と右上
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_bounding_box":{
"場所":{
"右上": {
"LAT": "40.807062"、
"LON": "119.108671"
}、
"左下の": {
"LAT": "22.12604"、
"LON": "101.741623"
}
}
}
}
}
}
}
20
指定されたポリゴン3.データクエリー(geo_polygonクエリ)
geo_polygonクエリが与えられたポリゴン内の地理的なポイントを見つけるために使用されます。例えば、三角形フフホト、重慶、上海、3人は街の三角形領域の位置を変更するには、クエリを構成しています。
[チェーンが失敗した外に、ソースステーションは、画像を保存することが推奨され、セキュリティチェーン機構を有していてもよいピクチャー・ダンプが(IMG-MXBETgbX-1578904421241)(D:\作業\ elasticsearch \ geo_polygon.png)直接ダウンアップロード]
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_polygon":{
"ロケーション":{
"ポイント":[
{ "LAT": "40.835015"、 "経度": "111.712958"}、
{ "LAT": "29.640695"、 "経度": "106.561715"}、
{ "121.50032" "LAT": "31.23482"、 "経度"}
]
}
}
}
}
}
データクエリgeo_shapeの4種類(geo_shapeクエリ)
geo_shapequery geo_shapeクエリ地理データの種類、それが地理的形状との関係を含む:交差点、互いに素3を備えています。設定の場所フィールドがgeo_shape種類あるタイプのテストのための新しいインデックスを作成します。
PUT geoshape
{
"設定": {
"number_of_shards": "1"、
"number_of_replicas": "0"
}、
"マッピング":{
"プロパティ": {
"市": {
「タイプ」:「キーワード」
}、
"場所":{
"タイプ": "geo_shape"
}
}
}
}
13
フィールドのgeo_point種類がある:最初緯度、経度、しかしポイントはgeo_shapeタイプである:最初の経度、緯度後。これは、特別な注意が必要です。
POST geoshape / _DOC / 1
{
「市」:「西安 - 鄭州」
"ロケーション":{
「タイプ」:「ラインストリング」、
"座標":[
[108.953364,34.372762]
[113.626277,34.76845]
]
}
}
クエリ矩形銀川地理南昌組成物内に含まれるデータは、線形西安と鄭州組成物が矩形領域内に入るので、照会することができます。
{
"クエリ":{
"BOOL":{
"必見":{
"match_all":{}
}、
"フィルタ":{
"geo_shape":{
"ロケーション":{
"形状":{
「タイプ」:「封筒」、
"座標":[
[106.230564,38.50359]
[115.870747,28.704175]
]
}、
「関係」:「中」
}
}
}
}
}
}
出典:https://blog.csdn.net/dwjf321/article/details/103960280