Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 15452|Odpowiedź: 0

[Źródło] Informacje o geolokalizacji Java w ElasticSearch (geo_point)

[Skopiuj link]
Opublikowano 09.01.2019 17:25:39 | | |
Krótkie wprowadzenie

Wiemy, że ES obsługuje szeroką gamę typów danych, oprócz naszych powszechnych podstawowych typów danych, wspiera także typy danych zapisujące informacje o lokalizacji. W ES istnieją dwa typy danych rejestrujące informacje geolokacyjne: geo_shap i geo_point, a poniżej krótko przedstawię geo_point typy
geo_point obsługuje wiele metod transferu danych:

struna
Pozycja: lata + "", + lon

Tablica
Pozycja: {"lat": ...,"lon": ...}

Cel
Lokalizacja: [łon, szerok]


Uwaga: Prawdopodobnie każdy przeszedł ten dół przynajmniej raz == Geograficzne punkty współrzędne to szerokość geograficzna najpierw i długość końcowa ("szerokość, długość geograficzna"), gdy wyrażane są jako ciągi znaków, podczas gdy tablice są reprezentowane w przeciwnej formie, z długością najpierw i szerokością szerokości na końcu ([długość, szerokość]). W rzeczywistości w Elasticesearch, niezależnie czy jest to postać ciągu czy tablicy, szerokość geograficzna jest na początku, a długość geograficzna na końcu. Jednak na początku, aby dostosować się do specyfikacji formatowania GeoJSON, zmieniono reprezentację form tablic. Jest to wyjaśnione na oficjalnej stronie internetowej.
Zazwyczaj istnieją następujące wymagania dotyczące zapytań dla geo_point typów

Zapytanie o odległość
Znajdź punkty w zasięgu od punktu centralnego

Zapytanie o zakres odległości (wycofane)
Zapytania do punktów w określonym zakresie punktu centralnego są usuwane z API w nowej wersji ES, więc nie będę tego tu zbyt szczegółowo tłumaczyć
Zapytanie ograniczające
Znajdź punkty w obrębie prostokąta składającego się z określonego punktu

Zapytanie wielokątne
Znajdź punkty w wielokątie złożonym z wielu punktów

Fabryka SearchSourceBuilder zbudowana dla różnych zapytań w Javie wygląda następująco:


Obsługa następująca:

Kod warstwy kontrolera wygląda następująco:

[1]. Jak używać

Zanim użyjemy geo_point typów, powinniśmy najpierw wyraźnie określić pole jako typ geo_point poprzez mapowanie podczas tworzenia indeksu, w następujący sposób:


Powyżej utworzyliśmy nowy indeks o nazwie restraunt, a w jego pliku mapowania wyraźnie określamy typ pola "location" jako "geo_point"

[2] Przygotuj dane

O Kibanie przygotowaliśmy następujące dane:


Przygotowaliśmy 7 danych powyżej, a następnie musimy wykonać zapytanie, aby sprawdzić, czy nasz interfejs spełnia nasze potrzeby.

[3] Dochodzenie

Odległość zapytania


Pozostałe dwa zapytania są takie same jak powyżej.




Poprzedni:ElasticsearchParseException[field musi być albo [lat], [lon] lub [geohash]]
Następny:Discuz instaluje aplikację i mówi "Dane nie są rozpoznawane, proszę zwróć" – obejście
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com