Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 15452|Resposta: 0

[Fonte] Informações de Geolocalização em Java no ElasticSearch (geo_point)

[Copiar link]
Publicado em 09/01/2019 17:25:39 | | |
Breve introdução

Sabemos que o ES suporta uma grande variedade de tipos de dados, além dos nossos tipos básicos comuns, também suporta tipos de dados que registram informações de localização. No ES, existem dois tipos de dados que registram informações de geolocalização, a saber, geo_shap e geo_point, e vou apresentar brevemente geo_point tipos abaixo
geo_point suporta múltiplos métodos de transferência de dados:

String
Posição: lat + "," + lon

Arranjo
Posição: {"lat": ...,"lon": ...}

Objetivo
Localização: [lon, lat]


Nota: Provavelmente todos já pisaram neste poço pelo menos uma vez == Os pontos de coordenadas geográficas são latitude primeiro e longitude por último ("latitude, longitude") quando expressos como cadeias, enquanto os arrays são representados na forma oposta, com longitude primeiro e latitude por último ([longitude, latitude]). Na verdade, dentro do Elasticesearch, seja na forma de corda ou de matriz, a latitude vem primeiro e a longitude vem por último. No entanto, nos primeiros dias, para se adaptar à especificação de formatação do GeoJSON, a representação dos formulários de array foi ajustada. Isso é explicado no site oficial.
Geralmente, existem os seguintes requisitos de consulta para os tipos de geo_point

Consulta de distância
Encontre pontos dentro do alcance do ponto central

Consulta de intervalo de distância (obsoleta)
Consultar pontos dentro do intervalo especificado do ponto central foi removido da API na nova versão do ES, então não vou explicar muito aqui
Consulta delimitadora
Encontre pontos dentro de um retângulo que consiste em um ponto especificado

Consulta de polígonos
Encontre pontos em um polígono composto por múltiplos pontos

A fábrica do SearchSourceBuilder construída para diferentes consultas em Java é a seguinte:


Serviço da seguinte forma:

O código da camada do controlador é o seguinte:

[1]. Como usar

Antes de usarmos geo_point tipos, devemos primeiro especificar explicitamente o campo como o tipo geo_point via mapeamento ao criar o índice, da seguinte forma:


Acima criamos um novo índice chamado restraunt e, em seu arquivo de mapeamento, especificamos explicitamente o tipo de campo "localização" como "geo_point"

[2] Prepare alguns dados

Sobre Kibana, preparamos os seguintes dados:


Preparamos 7 dados acima, e então precisamos executar a consulta para ver se nossa interface atende às nossas necessidades.

[3] Investigação

Distância de consulta


As outras duas perguntas são as mesmas acima.




Anterior:ElasticsearchParseException[campo deve ser [lat], [lon] ou [geohash]]
Próximo:A Discuz instala o app e diz "Dados não reconhecidos, por favor devolva" solução alternativa
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com