Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 15452|Antwoord: 0

[Bron] Java Geolocatie-informatie in ElasticSearch (geo_point)

[Link kopiëren]
Geplaatst op 09-01-2019 17:25:39 | | |
Korte introductie

We weten dat ES een grote verscheidenheid aan datatypes ondersteunt; naast onze gebruikelijke basisdatatypes ondersteunt het ook datatypes die locatiegegevens vastleggen. In ES zijn er twee soorten data die geolocatie-informatie vastleggen, namelijk geo_shap en geo_point, en ik zal hieronder kort geo_point typen introduceren
geo_point ondersteunt meerdere methoden voor gegevensoverdracht:

String
Positie: breedtegraad + "," + lon

Array
Positie: {"lat": ...,"lon": ...}

Doel
Locatie: [lon, lat]


Opmerking: Waarschijnlijk heeft iedereen deze put minstens één keer betreden == Geografische coördinatenpunten zijn eerst breedtegraad en lengtegraad als laatste ("breedtegraad, lengtegraad") wanneer ze als strings worden uitgedrukt, terwijl arrays in de tegenovergestelde vorm worden weergegeven, met lengtegraad eerst en breedtegraad als laatste ([lengtegraad, breedtegraad]). In feite komt binnen Elasticesearch, of het nu in de vorm van een string of een array is, de breedtegraad eerst en de lengtegraad als laatste. In de beginjaren werd echter, om zich aan te passen aan de opmaakspecificatie van GeoJSON, de representatie van arrayvormen aangepast. Dit wordt uitgelegd op de officiële website.
Er zijn over het algemeen de volgende query-eisen voor geo_point types

Afstandsquery
Vind punten binnen bereik van het middelpunt

Afstandsbereik-query (verouderd)
Het bevragen van punten binnen het opgegeven bereik van het middelpunt is verwijderd uit de API in de nieuwe versie van ES, dus ik zal het hier niet te veel uitleggen
Begrenzingsquery
Vind punten binnen een rechthoek bestaande uit een gespecificeerd punt

Polygoonquery
Vind punten in een veelhoek die uit meerdere punten bestaat

De SearchSourceBuilder-fabriek die is opgebouwd voor verschillende zoekopdrachten in Java is als volgt:


Dienst als volgt:

De controllerlaagcode is als volgt:

[1]. Hoe te gebruiken

Voordat we geo_point types gebruiken, moeten we eerst expliciet het veld specificeren als het geo_point type via mapping bij het maken van de index, als volgt:


Hierboven hebben we een nieuwe index aangemaakt genaamd restraunt, en in het mappingbestand specificeren we expliciet het type "locatie" veld als "geo_point"

[2] Maak wat data klaar

Over Kibana hebben we de volgende gegevens voorbereid:


We hebben hierboven 7 stukken data voorbereid, en daarna moeten we de query uitvoeren om te zien of onze interface aan onze behoeften voldoet.

[3] Onderzoek

Queryafstand


De andere twee vragen zijn hetzelfde als hierboven.




Vorig:ElasticsearchParseException[veld moet ofwel [lat], [lon] of [geohash]] zijn
Volgend:Discuz installeert de app en zegt "Data wordt niet herkend, wilt u retourneren" als oplossing.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com