A fim de facilitar a aprendizagem consulta localização ES, aqui preparou algumas coordenadas geográficas dos dados de teste, cada dados contém o nome da cidade e coordenadas geográficas dos dois campos. Primeiro, salve o seguinte em arquivo geo.json:
{ "Índice": { "_ índice": "geo", "_ id": "1"}}
{ "Cidade": "北京", "localtion": "40.019559,116.312282"}
{ "Índice": { "_ índice": "geo", "_ id": "2"}}
{ "Cidade": "乌鲁木齐", "localtion": "43.863737,87.53891"}
{ "Índice": { "_ índice": "geo", "_ id": "3"}}
{ "Cidade": "西安", "localtion": "34.43376,108.879774"}
{ "Índice": { "_ índice": "geo", "_ id": "4"}}
{ "Cidade": "郑州", "localtion": "34.76845,113.589482"}
{ "Índice": { "_ índice": "geo", "_ id": "5"}}
{ "Cidade": "杭州", "localtion": "30.345351,120.102125"}
{ "Índice": { "_ índice": "geo", "_ id": "6"}}
{ "Cidade": "济南", "localtion": "36.688506,117.158558"}
{ "Índice": { "_ índice": "geo", "_ id": "7"}}
{ "Cidade": "上海", "localtion": "31.298035,121.426731"}
{ "Índice": { "_ índice": "geo", "_ id": "8"}}
{ "Cidade": "武汉", "localtion": "30.632158,114.28858"}
{ "Índice": { "_ índice": "geo", "_ id": "9"}}
{ "Cidade": "广州", "localtion": "23.150725,113.221536"}
Em seguida, criar um índice:
geo PUT
{
"configurações": {
"number_of_shards": "1",
"Number_of_replicas": "0"
},
"mapeamentos": {
"propriedades": {
"cidade": {
"Type": "palavra-chave"
},
"Localização": {
"Type": "geo_point"
}
}
}
}
Em seguida, execute:
$ Onda -X POST "localhost: 9200 / _bulk bonita?" -H 'Content-Type: application / json' --data-binário @ geo.json
1
1. consulta raio (consulta geo_distance)
consulta geo_distance pode encontrar o ponto de centro geográfico do documento dentro de um raio específico. Como uma consulta dentro de 500 km da cidade de Tianjin, os resultados da pesquisa irá retornar a Pequim, Jinan, o comando é o seguinte:
{
"inquerir":{
"Bool": {
"devo":{
"Match_all": {}
},
"filtro":{
"Geo_distance": {
"Distância": "500 km",
"localização":{
"Lat": "38.993443",
"Lon": "117.158558"
}
}
}
}
}
}
Ordenar por distância de Tianjin:
{
"inquerir": {
"Bool": {
"devo": {
"Match_all": {}
},
"Filtro": {
"Geo_distance": {
"Distância": "500 km",
"Localização": {
"Lat": "38.993443",
"Lon": "117.158558"
}
}
}
}
},
"ordenar": [
{
"_Geo_distance": {
"Localização": {
"Lat": "38.993443",
"Lon": "117.158558"
},
"Unidade": "km"
}
}
]
}
2. Especifique a consulta dentro de um retângulo (query geo_bounding_box)
geo_bounding_box consulta configurados para consultar as coordenadas geográficas abrangidas pelo retângulo especificado. Consulta de um rectângulo definido pelos dois pontos, como mostrado na pontos Yinchuan e Nanchang feitas em ambos vertical (longitude), e as linhas paralelas (dimensão), respectivamente, a linha de intersecção irá formar uma área rectangular, pode consultar a Xian , Zhengzhou, Wuhan.
[Imagem despejo fora da cadeia falhar, a estação de origem pode ter um mecanismo de cadeia de segurança, recomenda-se para salvar as imagens enviadas diretamente para baixo (img-ZiJZ1UCp-1578904421240) (D: \ work \ ElasticSearch \ geo_bouding_box.png)]
Esquerda e direito cantos inquérito
{
"inquerir":{
"Bool": {
"devo":{
"Match_all": {}
},
"filtro":{
"Geo_bounding_box": {
"localização":{
"TOP_LEFT": {
"Lat": "38.532499",
"Lon": "106.193769"
},
"canto inferior direito":{
"Lon": "115.907542"
}
}
}
}
}
}
}
O canto inferior esquerdo e superior direito de inquérito
{
"inquerir": {
"Bool": {
"devo": {
"Match_all": {}
},
"Filtro": {
"Geo_bounding_box": {
"Localização": {
"canto superior direito": {
"Lat": "40.807062",
"Lon": "119.108671"
},
"inferior esquerdo": {
"Lat": "22,12604",
"Lon": "101.741623"
}
}
}
}
}
}
}
20
3. Pesquisa de Dados (consulta geo_polygon) em um polígono designado
consulta geo_polygon usado para encontrar ponto geográfico dentro de um determinado polígono. Por exemplo, um triângulo Hohhot, Chongqing, Xangai, os três compõem a consulta em mudar a posição da área triangular da cidade.
[Imagem despejo fora da cadeia falhar, a estação de origem pode ter um mecanismo de cadeia de segurança, recomenda-se para salvar as imagens enviadas diretamente para baixo (img-MXBETgbX-1578904421241) (D: \ work \ ElasticSearch \ geo_polygon.png)]
{
"inquerir":{
"Bool": {
"devo":{
"Match_all": {}
},
"filtro":{
"Geo_polygon": {
"localização":{
"pontos":[
{ "Lat": "40.835015", "lon": "111.712958"},
{ "Lat": "29.640695", "lon": "106.561715"},
{ "Lat": "31,23482", "lon": "121,50032"}
]
}
}
}
}
}
4 tipos de geo_shape consulta de dados (consulta geo_shape)
geo_shapequery geo_shape consulta para o tipo de dados geográficos, que compreende a relação entre a forma geográfica é: intersecção, compreendendo três disjuntos. Criar um novo índice para o teste, que tipo de campo configuração do local é do tipo geo_shape:
geoshape PUT
{
"configurações": {
"number_of_shards": "1",
"Number_of_replicas": "0"
},
"mapeamentos": {
"propriedades": {
"cidade": {
"Type": "palavra-chave"
},
"Localização": {
"Type": "geo_shape"
}
}
}
}
13
tipos geo_point de campos são: primeiro latitude, a longitude, mas o ponto é tipos geo_shape: primeiro longitude, latitude depois. Isso requer uma atenção especial.
POST geoshape / _doc / 1
{
"City": "Xi'an - Zhengzhou"
"localização":{
"Type": "cadeia de linhas",
"coordenadas": [
[108.953364,34.372762],
[113.626277,34.76845]
]
}
}
Consultar os dados contidos no formato retangular Yinchuan composição geográfica Nanchang, uma vez que o linear Xian e Zhengzhou composição caindo dentro da área retangular, que pode ser consultado.
{
"inquerir":{
"Bool": {
"devo":{
"Match_all": {}
},
"filtro":{
"Geo_shape": {
"localização":{
"forma":{
"Type": "envelope",
"coordenadas": [
[106.230564,38.50359],
[115.870747,28.704175]
]
},
"Relação": "dentro"
}
}
}
}
}
}
Fonte: https://blog.csdn.net/dwjf321/article/details/103960280