Elasticsearch Samouczek
Rozpoczęcie pracy z Elasticsearch
Szukaj…
Uwagi
Elasticsearch to zaawansowany serwer wyszukiwania typu open source oparty na Lucene i napisany w Javie.
Zapewnia rozproszone pełne i częściowe wyszukiwanie tekstowe, oparte na zapytaniach i geolokalizacji funkcje wyszukiwania dostępne za pośrednictwem interfejsu API REST HTTP.
Wersje
| Wersja | Data wydania |
|---|---|
| 5.2.1 | 14.02.2017 |
| 5.2.0 | 31.01.2017 |
| 5.1.2 | 2017-01-12 |
| 5.1.1 | 08.12.2016 |
| 5.0.2 | 29.11.2016 |
| 5.0.1 | 15.11.2016 |
| 5.0.0 | 26.10.2016 |
| 2.4.0 | 31.08.2016 |
| 2.3.0 | 30.03.2016 |
| 2.2.0 | 02.02.2016 |
| 2.1.0 | 24.11.2015 |
| 2.0.0 | 28.10.2015 |
| 1.7.0 | 2015-07-16 |
| 1.6.0 | 2015-06-09 |
| 1.5.0 | 2015-03-06 |
| 1.4.0 | 05.11.2014 |
| 1.3.0 | 2014-07-23 |
| 1.2.0 | 2014-05-22 |
| 1.1.0 | 2014-03-25 |
| 1.0.0 | 14.02.2014 |
Instalowanie Elasticsearch na Ubuntu 14.04
Wymagania wstępne
Aby uruchomić Elasticsearch, na komputerze wymagane jest środowisko Java Runtime Environment (JRE). Elasticsearch wymaga Java 7 lub nowszej i zaleca Oracle JDK version 1.8.0_73 .
Zainstaluj Oracle Java 8
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
Sprawdź wersję Java
java -version
Pobierz i zainstaluj pakiet
Korzystanie z plików binarnych
- Pobierz najnowszą stabilną wersję Elasticsearch tutaj .
- Rozpakuj plik i uruchom
Linux:
$ bin/elasticsearch
Korzystanie z apt-get
Alternatywą dla pobierania elasticsearch ze strony jest zainstalowanie go za pomocą apt-get .
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo /etc/init.d/elasticsearch start
Instalowanie elasticsearch w wersji 5.x
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
Działający jako usługa w systemie Linux:
Po instalacji powyższe nie uruchamia się samo. więc musimy uruchomić go jako usługę. Jak uruchomić lub zatrzymać Elasticsearch, zależy od tego, czy Twój system używa SysV init, czy systemd. możesz to sprawdzić za pomocą następującego polecenia.
ps -p 1
Jeśli twoja dystrybucja korzysta z SysV init, musisz uruchomić:
sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
W przeciwnym razie, jeśli Twoja dystrybucja używa systemud:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
Uruchom komendę CURL z przeglądarki lub klienta REST, aby sprawdzić, czy Elasticsearch został poprawnie zainstalowany.
curl -X GET http://localhost:9200/
Instalowanie Elasticsearch w systemie Windows
Wymagania wstępne
Wersję Elasticsearch dla systemu Windows można uzyskać pod tym linkiem: https://www.elastic.co/downloads/elasticsearch . Najnowsza stabilna wersja jest zawsze na szczycie.
Podczas instalacji w systemie Windows potrzebujemy archiwum .ZIP . Kliknij link w sekcji Downloads: i zapisz plik na komputerze.
Ta wersja elastyczna jest „przenośna”, co oznacza, że nie trzeba uruchamiać instalatora, aby korzystać z programu. Rozpakuj zawartość pliku do łatwo zapamiętanej lokalizacji. Dla celów demonstracyjnych założymy, że rozpakowałeś wszystko do C:\elasticsearch .
Pamiętaj, że archiwum zawiera domyślnie folder o nazwie elasticsearch-<version> , możesz albo wyodrębnić ten folder do C:\ i zmienić nazwę na elasticsearch albo samodzielnie utworzyć C:\elasticsearch , a następnie rozpakować tylko zawartość folderu w archiwum tam.
Ponieważ Elasticsearch jest napisany w Javie, musi działać w środowisku Java Runtime Environment. Przed uruchomieniem serwera sprawdź, czy Java jest dostępna, otwierając wiersz polecenia i wpisując:
java -version
Powinieneś otrzymać odpowiedź, która wygląda następująco:
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)
Jeśli zamiast tego zobaczysz następujące informacje
„java” nie jest rozpoznawana jako wewnętrzna lub zewnętrzna komenda, program operacyjny lub plik wsadowy.
Java nie jest zainstalowana w twoim systemie lub nie jest poprawnie skonfigurowana. Możesz wykonać ten samouczek, aby (ponownie) zainstalować Javę. Upewnij się również, że te zmienne środowiskowe są ustawione na podobne wartości:
| Zmienna | Wartość |
|---|---|
| JAVA_HOME | C: \ Program Files \ Java \ jre |
| ŚCIEŻKA | …; C: \ Program Files \ Java \ jre |
Jeśli jeszcze nie wiesz, jak sprawdzić te zmienne, zapoznaj się z tym samouczkiem .
Uruchom z pliku wsadowego
Po zainstalowaniu Java otwórz folder bin . Można go znaleźć bezpośrednio w folderze, do którego rozpakowałeś wszystko, więc powinien znajdować się pod c:\elasticsearch\bin . W tym folderze znajduje się plik o nazwie elasticsearch.bat którego można użyć do uruchomienia Elasticsearch w oknie poleceń. Oznacza to, że informacje zarejestrowane przez proces będą widoczne w oknie wiersza polecenia. Aby zatrzymać serwer, naciśnij CTRL C lub po prostu zamknij okno.
Uruchom jako usługę systemu Windows
W idealnym przypadku nie chcesz mieć dodatkowego okna, którego nie możesz się pozbyć podczas programowania, i z tego powodu Elasticsearch można skonfigurować do działania jako usługa.
Zanim będziemy mogli zainstalować Elasticsearch jako usługę, musimy dodać linię do pliku C:\elasticsearch\config\jvm.options :
Instalator usługi wymaga skonfigurowania rozmiaru stosu wątków w
jvm.optionsprzed zainstalowaniem usługi. W 32-bitowym systemie Windows należy dodać-Xss320k[…], aw 64-bitowym systemie Windows należy dodać-Xss1mdo plikujvm.options. [źródło]
Po wprowadzeniu tej zmiany otwórz wiersz polecenia i przejdź do katalogu bin , uruchamiając następujące polecenie:
C:\Users\user> cd c:\elasticsearch\bin
Zarządzanie usługami jest obsługiwane przez elasticsearch-service.bat . W starszych wersjach plik ten można nazwać po prostu service.bat . Aby zobaczyć wszystkie dostępne argumenty, uruchom je bez żadnych:
C:\elasticsearch\bin> elasticsearch-service.bat
Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
Dane wyjściowe mówią nam również, że istnieje opcjonalny argument SERVICE_ID , ale na razie możemy go zignorować. Aby zainstalować usługę, po prostu uruchom:
C:\elasticsearch\bin> elasticsearch-service.bat install
Po zainstalowaniu usługi można ją uruchomić i zatrzymać za pomocą odpowiednich argumentów. Aby uruchomić usługę, uruchom
C:\elasticsearch\bin> elasticsearch-service.bat start
i żeby to zatrzymać, biegnij
C:\elasticsearch\bin> elasticsearch-service.bat stop
Jeśli zamiast tego wolisz GUI do zarządzania usługą, możesz użyć następującego polecenia:
C:\elasticsearch\bin> elasticsearch-service.bat manager
Spowoduje to otwarcie Elastic Service Manager, który pozwala dostosować niektóre ustawienia związane z usługami, a także zatrzymać / uruchomić usługę za pomocą przycisków znajdujących się na dole pierwszej karty.
Indeksowanie i wyszukiwanie dokumentu
Dostęp do Elasticsearch można uzyskać za pośrednictwem interfejsu API HTTP REST, zwykle przy użyciu biblioteki cURL. Wiadomości między serwerem wyszukiwania a klientem (Twoją lub aplikacją) są wysyłane w postaci ciągów JSON. Domyślnie Elasticsearch działa na porcie 9200.
W poniższych przykładach dodano ?pretty aby poinformować Elasticsearch, aby uściślił odpowiedź JSON. Podczas korzystania z tych punktów końcowych w aplikacji nie trzeba dodawać tego parametru zapytania.
Indeksowanie dokumentów
Jeśli zamierzamy później zaktualizować informacje w indeksie, dobrym pomysłem jest przypisanie unikatowych identyfikatorów do indeksowanych dokumentów. Aby dodać dokument do indeksu o nazwie megacorp , wpisz typ employee i ID 1 uruchom:
curl -XPUT "http://localhost:9200/megacorp/employee/1?pretty" -d'
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}'
Odpowiedź:
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
Indeks jest tworzony, jeśli nie istnieje, gdy wysyłamy wywołanie PUT.
Indeksowanie bez identyfikatora
POST /megacorp/employee?pretty
{
"first_name" : "Jane",
"last_name" : "Smith",
"age" : 32,
"about" : "I like to collect rock albums",
"interests": [ "music" ]
}
Odpowiedź:
{
"_index": "megacorp",
"_type": "employee",
"_id": "AVYg2mBJYy9ijdngfeGa",
"_version": 1,
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}
Odzyskiwanie dokumentów
curl -XGET "http://localhost:9200/megacorp/employee/1?pretty"
Odpowiedź:
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
Pobierz 10 dokumentów z indeksu megacorp z typem employee :
curl -XGET "http://localhost:9200/megacorp/employee/_search?pretty"
Odpowiedź:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 1,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
},
{
"_index": "megacorp",
"_type": "employee",
"_id": "AVYg2mBJYy9ijdngfeGa",
"_score": 1,
"_source": {
"first_name": "Jane",
"last_name": "Smith",
"age": 32,
"about": "I like to collect rock albums",
"interests": [
"music"
]
}
}
]
}
}
Proste wyszukiwanie za pomocą zapytania o match , które szuka dokładnych dopasowań w polu, pod warunkiem:
curl -XGET "http://localhost:9200/megacorp/employee/_search" -d'
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}'
Odpowiedź:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.6931472,
"hits": [
{
"_index": "megacorp",
"_type": "employee",
"_id": "1",
"_score": 0.6931472,
"_source": {
"first_name": "John",
"last_name": "Smith",
"age": 25,
"about": "I love to go rock climbing",
"interests": [
"sports",
"music"
]
}
}
]
}
}
Podstawowe parametry wyszukiwania z przykładami:
Domyślnie pełny indeksowany dokument jest zwracany jako część wszystkich wyszukiwań. Jest to określane jako źródło (pole _source w _source wyszukiwania). Jeśli nie chcemy, aby cały dokument źródłowy został zwrócony, mamy możliwość żądania tylko kilku pól ze źródła, lub możemy ustawić wartość _source na false, aby całkowicie pominąć pole.
Ten przykład pokazuje, jak zwrócić dwa pola, account_number i balance (wewnątrz _source ), z wyszukiwania:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}'
Zauważ, że powyższy przykład po prostu ogranicza informacje zwracane w polu _source . Nadal zwróci tylko jedno pole o nazwie _source ale uwzględnione zostaną tylko pola account_number i balance .
Jeśli wywodzisz się z tła SQL, powyższe jest w pewnym sensie podobne do zapytania SQL
SELECT account_number, balance FROM bank;
Teraz przejdźmy do części zapytania. Wcześniej widzieliśmy, jak zapytanie match_all jest używane do dopasowania wszystkich dokumentów. Wprowadźmy teraz nowe zapytanie o nazwie pasujące zapytanie, które można traktować jako podstawowe zapytanie z polami wyszukiwania (tzn. Wyszukiwanie z określonego pola lub zestawu pól).
Ten przykład zwraca konto z account_number ustawionym na 20 :
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "account_number": 20 } }
}'
Ten przykład zwraca wszystkie konta zawierające termin „mill” w address :
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill" } }
}'
Ten przykład zwraca wszystkie konta zawierające termin „młyn” lub „pas” w address :
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match": { "address": "mill lane" } }
}'
Ten przykład jest wariantem match ( match_phrase ), która dzieli zapytanie na warunki i zwraca tylko dokumenty zawierające wszystkie warunki w address w tych samych pozycjach względem siebie [1] .
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": { "match_phrase": { "address": "mill lane" } }
}'
Wprowadźmy teraz zapytanie bool (ean). Zapytanie bool pozwala nam komponować mniejsze zapytania w większe, używając logiki boolowskiej.
Ten przykład składa się z dwóch dopasowanych zapytań i zwraca wszystkie konta zawierające „mill” i „lane” w adresie:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
W powyższym przykładzie klauzula bool must określa wszystkie zapytania, które muszą być prawdziwe, aby dokument mógł zostać uznany za zgodny.
W przeciwieństwie do tego przykład składa się z dwóch zapytań dopasowujących i zwraca wszystkie konta zawierające „mill” lub „lane” w address :
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"should": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
W powyższym przykładzie klauzula bool should określać listę zapytań, z których każde musi być prawdziwe, aby dokument został uznany za zgodny.
Ten przykład składa się z dwóch dopasowanych zapytań i zwraca wszystkie konta, które nie zawierają ani „frezowania”, ani „pasa” w address :
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must_not": [
{ "match": { "address": "mill" } },
{ "match": { "address": "lane" } }
]
}
}
}'
W powyższym przykładzie klauzula bool must_not określa listę zapytań, z których żadne nie musi być prawdziwe, aby dokument został uznany za zgodny.
Możemy łączyć klauzule must, should i must_not jednocześnie w zapytaniu bool. Ponadto możemy komponować zapytania boolowe w obrębie dowolnej z tych klauzul boolowych, aby naśladować złożoną logikę logiczną wielopoziomową.
Ten przykład zwraca wszystkie konta, które należą do osób, które mają dokładnie 40 lat i nie mieszkają w Waszyngtonie (w skrócie WA ):
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "WA" } }
]
}
}
}'
Instalowanie Elasticsearch i Kibana na CentOS 7
Aby uruchomić Elasticsearch, na komputerze wymagane jest środowisko Java Runtime Environment (JRE). Elasticsearch wymaga Java 7 lub nowszej i zaleca Oracle JDK version 1.8.0_73 .
Więc upewnij się, że masz Java w swoim systemie. Jeśli nie, postępuj zgodnie z procedurą:
# Install wget with yum
yum -y install wget
# Download the rpm jre-8u60-linux-x64.rpm for 64 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"
# Download the rpm jre-8u101-linux-i586.rpm for 32 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jre-8u101-linux-i586.rpm"
# Install jre-.*.rpm
rpm -ivh jre-.*.rpm
Java powinna być już zainstalowana w twoim systemie CentOS. Możesz to sprawdzić za pomocą:
java -version
Pobierz i zainstaluj elasticsearch
# Download elasticsearch-2.3.5.rpm
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.5/elasticsearch-2.3.5.rpm
# Install elasticsearch-.*.rpm
rpm -ivh elasticsearch-.*.rpm
Uruchamianie elasticsearch jako usługi systemowej podczas uruchamiania
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
# check the current status to ensure everything is okay.
systemctl status elasticsearch
Instalowanie Kibana
Najpierw zaimportuj klucz GPG na rpm
sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
Następnie utwórz lokalne repozytorium kibana.repo
sudo vi /etc/yum.repos.d/kibana.repo
I Dodaj następującą treść:
[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
Teraz zainstaluj kibana, wykonując następujące polecenie:
yum -y install kibana
Zacznij od:
systemctl start kibana
Sprawdź status za pomocą:
systemctl status kibana
Możesz uruchomić go jako usługę startową.
systemctl enable kibana