База данни на Elasticsearch
Elasticsearch е една от най-популярните бази данни NoSQL, която се използва за съхраняване и търсене на текстово базирани данни. Той се основава на технологията за индексиране Lucene и позволява извличане на търсене за милисекунди въз основа на данни, които се индексират.
Въз основа на уебсайта Elasticsearch, ето дефиницията:
Elasticsearch е разпределен с отворен код, RESTful двигател за търсене и анализ, способен да реши все по-голям брой случаи на употреба.
Това бяха няколко думи на високо ниво за Elasticsearch. Нека разберем подробно понятията тук.
- Разпределени: Elasticsearch разделя данните, които съдържа, на множество възли и използва господар-роб алгоритъм вътрешно
- ПОЧИВКА: Elasticsearch поддържа заявки към база данни чрез REST API. Това означава, че можем да използваме прости HTTP повиквания и да използваме HTTP методи като GET, POST, PUT, DELETE и т.н. за достъп до данни.
- Двигател за търсене и анализ: ES поддържа силно аналитични заявки, които да се изпълняват в системата, които могат да се състоят от обобщени заявки и множество типове, като структурирани, неструктурирани и геозаявки.
- Хоризонтално-мащабируема: Този вид мащабиране се отнася до добавяне на повече машини към съществуващ клъстер. Това означава, че ES е способен да приема повече възли в своя клъстер и да не осигурява време за престой за необходимите надстройки на системата. Погледнете изображението по-долу, за да разберете концепциите за мащабиране:
Вертикално и хоризонтално скалиране
Първи стъпки с базата данни Elasticsearch
За да започнете да използвате Elasticsearch, той трябва да бъде инсталиран на машината. За да направите това, прочетете Инсталиране на ElasticSearch на Ubuntu.
Уверете се, че имате активна инсталация на ElasticSearch, ако искате да изпробвате примери, които представяме по-късно в урока.
Elasticsearch: Концепции и компоненти
В този раздел ще видим какви компоненти и концепции се крият в сърцето на Elasticsearch. Разбирането за тези концепции е важно, за да се разбере как работи ES:
- Клъстер: Клъстерът е колекция от сървърни машини (възли), която съхранява данните. Данните са разделени между множество възли, така че да могат да се репликират и единична точка на отказ (SPoF) не се случва с ES сървъра. Името по подразбиране на клъстера е еластично търсене. Всеки възел в клъстера се свързва с клъстера с URL адрес и име на клъстера, така че е важно това име да бъде ясно и ясно.
- Възел: Машината на възела е част от сървър и се нарича единична машина. Той съхранява данните и осигурява възможности за индексиране и търсене, заедно с други възли към клъстера.
Поради концепцията за хоризонтално мащабиране, ние можем на практика да добавим безкраен брой възли в ES клъстер, за да му придадем много повече сила и възможности за индексиране.
- Индекс: Индекс е колекция от документи с донякъде подобни характеристики. Индексът е почти подобен на база данни в среда, базирана на SQL.
- Тип: Тип се използва за разделяне на данни между един и същ индекс. Например, базата данни / индекс на клиенти може да има множество типове, като потребител, тип_плащане и т.н.
Имайте предвид, че типовете са оттеглени от ES v6.0.0 нататък. Прочетете тук защо е направено това.
- Документ: Документът е най-ниското ниво на единица, която представлява данни. Представете си го като JSON обект, който съдържа вашите данни. Възможно е да индексирате толкова много документи в индекса.
Видове търсене в Elasticsearch
Elasticsearch е известен със своите възможности за търсене в почти реално време и гъвкавостите, които предоставя с типа данни, които се индексират и търсят. Нека започнем да изучаваме как да използваме търсенето с различни видове данни.
- Структурирано търсене: Този тип търсене се изпълнява на данни, които имат предварително определен формат като дати, времена и числа. С предварително дефинирания формат идва гъвкавостта при провеждане на общи операции като сравняване на стойности в диапазон от дати. Интересно, текстовите данни също могат да бъдат структурирани. Това може да се случи, когато дадено поле има фиксиран брой стойности. Например, Име на базите данни може да бъде, MySQL, MongoDB, Elasticsearch, Neo4J и т.н. При структурираното търсене отговорът на заявките, които изпълняваме, е да или не.
- Пълнотекстово търсене: Този тип търсене зависи от два важни фактора, Уместност и Анализ. С Релевантност определяме доколко някои данни съвпадат с заявката, като дефинираме оценка за получените документи. Този резултат се осигурява от самия ES. Анализ се отнася до разбиване на текста на нормализирани маркери, за да се създаде обърнат индекс.
- Многополево търсене: Тъй като броят на аналитичните заявки непрекъснато се увеличава за съхранените данни в ES, обикновено не се изправяме само срещу заявки с просто съвпадение. Изискванията са нараснали за изпълнение на заявки, които обхващат множество полета и имат сортиран сортиран списък с данни, върнати ни от самата база данни. По този начин данните могат да присъстват на крайния потребител по много по-ефективен начин.
- Proimity Matching: Заявките днес са много повече от просто идентифициране дали някои текстови данни съдържат друг низ или не. Става въпрос за установяване на връзката между данните, така че те да могат да бъдат оценявани и съпоставяни с контекста, в който данните се съпоставят. Например:
- Топка удари Джон
- Джон удари топката
- Джон купи нова топка, която беше ударена в градината на Jaen
Заявка за съвпадение ще намери и трите документа при търсене Удар с топка. Търсенето на близост може да ни каже до каква степен тези две думи се появяват в един и същи ред или абзац, поради което те съвпадат.
- Частично съвпадение: Често трябва да изпълняваме частични съвпадения. Частичното съвпадение ни позволява да изпълняваме заявки, които съвпадат частично. За да визуализираме това, нека разгледаме подобни SQL базирани заявки:
SQL заявки: Частично съвпадение
КЪДЕ име като "% john%"
И ИМЕ КАТО "% red%"
И ИМЕ КАТО "% градина%"В някои случаи трябва да изпълняваме само частични заявки за съвпадение, дори когато те могат да се считат за техники на груба сила.
Интеграция с Kibana
Когато става въпрос за механизъм за анализ, обикновено трябва да изпълняваме заявки за анализ в домейн за бизнес интелигентност (BI). Когато става въпрос за бизнес анализатори или анализатори на данни, не би било справедливо да се предположи, че хората знаят език за програмиране, когато искат да визуализират данните, присъстващи в ES Cluster. Този проблем се решава от Kibana. Kibana предлага толкова много предимства за BI, че хората действително могат да визуализират данни с отлично, персонализиращо се табло за управление и да виждат данните нетрактивно. Нека разгледаме някои от неговите предимства тук.
Интерактивни диаграми
В основата на Kibana са интерактивни класации като тези:
Kibana се предлага с различни видове диаграми като кръгови диаграми, слънчеви изблици, хистограми и много други, които използват пълните възможности за агрегиране на ES.
Подкрепа за картографиране
Kibana също така поддържа пълна геоагрегация, която ни позволява да картографираме нашите данни. Не е ли готино?!
Предварително изградени агрегации и филтри
С предварително изградените агрегации и филтри е възможно буквално да фрагментирате, пускате и изпълнявате силно оптимизирани заявки в таблото за управление на Kibana. Само с няколко щраквания е възможно да стартирате обобщени заявки и да представите резултати под формата на интерактивни диаграми.
Лесно разпределение на таблата
С Kibana също е много лесно да споделяте табла за управление с много по-широка аудитория, без да правите промени в таблото с помощта на режима Само на таблото. Можем лесно да вмъкнем табла за управление в нашата вътрешна wiki или уеб страници.
Представени изображения, направени от продуктовата страница на Kibana.
Използване на Elasticsearch
За да видите подробности за екземпляра и информация за клъстера, изпълнете следната команда:
Сега можем да опитаме да вмъкнем някои данни в ES, като използваме следната команда:
Вмъкване на данни
къдрица \-X POST 'http: // localhost: 9200 / linuxhint / hello / 1' \
-H 'Тип съдържание: application / json' \
-d '"name": "LinuxHint"' \
Ето какво получаваме обратно с тази команда:
Нека се опитаме да получим данните сега:
Получаване на данни
curl -X ВЗЕМЕТЕ 'http: // localhost: 9200 / linuxhint / hello / 1'Когато изпълним тази команда, получаваме следния изход:
Заключение
В този урок разгледахме как можем да започнем да използваме ElasticSearch, който е отличен механизъм за анализ и предоставя отлична поддръжка и за търсене на свободен текст в реално време.