Czym jest elasticsearch i jak radzi sobie z dużą ilością danych ?

Elasticsearch to rozproszony silnik wyszukiwania oparty o Apache Lucene. Elasticsearch to tak naprawdę niezależna baza danych, stworzona w Javie. Rozproszony dlatego ponieważ umożliwia klastrowanie czyli uruchomienie wielu instancji tej samej aplikacji tworzącą jedną, dzięki czemu możemy stworzyć naprawdę dużą i wydajną bazę danych, która przyjmie dane wsadowe w wielu zaawansowanych formatach, a co najważniejsze umożliwi szybkie wyszukiwanie pełnotekstowe, a na dodatek będzie łatwa w obsłudze dla deweloperów, ponieważ komunikacja z Elasticsearch następuje za pomocą JSON.

Jeśli w Twojej firmie masz do czynienia z dużymi zbiorami danych to właśnie Elasticsearch dedykowany jest dla Ciebie.
W Zdalny Admin utworzymy dla Ciebie odpowiednie środowisko serwerowe, które będzie korzystało z nierelacyjnej i bardzo wydajnej bazy jaką jest elasticsearch, a Twoi deweloperzy podłączą aplikację do niej w bardzo łatwy sposób.

Elasticsearch nasłuchuje na porcie 9200 na interfejsie localhost. Więc wszystko wysyłamy HTTP  i dostajemy w wyniku JSON np:

 

{
“status” : 200,
“name” : “Big Man”,
“cluster_name” : “elasticsearch”,
“version” : {
“number” : „1.7.2”,
“build_hash” : “e43676b1385b8125d647f593f7202acbd816e8ec”,
“build_timestamp” : „2015-09-14T09:49:53Z”,
“build_snapshot” : false,
“lucene_version” : „4.10.4”
},
“tagline” : „You Know, for Search”
}

Proces wyszukiwania również jest bardzo prosty:

{
“took” : 85,
“timed_out” : false,
“_shards” : {
“total” : 5,
“successful” : 5,
“failed” : 0
},
“hits” : {
“total” : 3,
“max_score” : 1.0,
“hits” : [ {
“_index” : “blog”,
“_type” : “post”,
“_id” : “1”,
“_score” : 1.0, “_source” :
{
“user”: “dilbert”,
“postDate”: “2011-12-15”,
“body”: „Search is hard. Search should be easy.” ,
“title”: “On search”
}
}, {
“_index” : “blog”,
“_type” : “post”,
“_id” : “2”,
“_score” : 0.30685282, “_source” :
{
“user”: “dilbert”,
“postDate”: “2011-12-12”,
“body”: „Distribution is hard. Distribution should be easy.” ,
“title”: “On distributed search”
}
}, {
“_index” : “blog”,
“_type” : “post”,
“_id” : “3”,
“_score” : 0.30685282, “_source” :
{
“user”: “dilbert”,
“postDate”: “2011-12-10”,
“body”: „Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat” ,
“title”: “Lorem ipsum”
}
} ]
}

Celem tego drobnego tekstu było zaprezentowanie czym jest Elasticsearch i jak radzić sobie z dużą ilością danych w sposób inny niż dokooptowanie kolejnych serwerów pod MySQL lub PostgreSQL.

Przykłady kodu zostały zaczerpnięte z elasticsearchtutorial.