{"id":403,"date":"2015-07-03T12:38:42","date_gmt":"2015-07-03T10:38:42","guid":{"rendered":"https:\/\/schwarzer.de\/blog\/?p=403"},"modified":"2020-09-21T13:31:19","modified_gmt":"2020-09-21T11:31:19","slug":"elasticsearch-tutorial-das-konzept-verstehen","status":"publish","type":"post","link":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/","title":{"rendered":"ElasticSearch Tutorial: Das Konzept verstehen"},"content":{"rendered":"<p><!-- <ezTOC> -->Der Suchserver <strong>ElasticSearch<\/strong> ist schwer im Kommen. Geschwindigkeit, Anpassbarkeit und Verl\u00e4sslichkeit sind nur einige wenige seiner St\u00e4rken. Bevor man sich aber an die Implementierung dieser m\u00e4chtigen Such-Software wagt, sollte man erst die <strong>Funktionsweise<\/strong> und die <strong>Architektur<\/strong> von ElasticSearch verstehen.<\/p>\n<h2 id=\"elasticsearch-step-by-step-fallbeispiel\">ElasticSearch Step by Step: Fallbeispiel<\/h2>\n<p>Nehmen wir hierzu einen Usecase, welcher nicht unbedingt nur der reinen Phantasie entspringt: Wir m\u00f6chten eine OnlineMarket-Plattform auf die Beine stellen, wo man sich als K\u00e4ufer und Verk\u00e4ufer anmelden kann. So eine Art Amazon Marketplace oder eBay. Soweit so gut. Der Punkt hier ist aber: Die Artikel und Verk\u00e4uferdaten sollten durchsuchbar sein. Und zwar nicht irgendwie im 0815-Stil mit billigen SQL-Queries wie<\/p>\n<pre><code>SELECT * FROM articles WHERE name LIKE '%$searchTerm%' OR description '%$searchTerm%' <\/code><\/pre>\n<p>sondern richtig professionell. Tja, dazu muss wohl eine <strong>Searchengine<\/strong> her.<\/p>\n<h2 id=\"elasticsearch-tutorial-eindeutig-solide-basis\">ElasticSearch Tutorial: Eindeutig solide Basis<\/h2>\n<p>Ein sehr weit verbreiteter Suchserver ist <strong>Apache Lucene<\/strong>. Wikimedia zum Beispiel verwendete bis vor kurzem diese Such-Engine. Lucene ist sehr gut getestet und l\u00e4uft stabil und schnell, keine Frage. Das Problem ist aber, dass man auf Lucene nur mit Java Zugriff hat, die Implementierung und Konfiguration etwas aufw\u00e4ndiger sind und z.B. die Datenstruktur vor dem Indizieren bereits bekannt sein muss. Diese und viele weitere Eigenheiten versucht ElasticSearch auszub\u00fcgeln. An dieser Stelle sei gesagt, dass ElasticSearch kein Abklatsch von Lucene ist und es auch nicht versucht abzul\u00f6sen, sondern ein <strong>Wrapper<\/strong> um Lucene ist. Deswegen ist auch Wikimedia auf ElasticSearch umgestiegen. Und deswegen machen auch wir den Start mit ElasticSearch.<\/p>\n<h2 id=\"elasticsearch-tutorial-architektur-und-konzepte\">ElasticSearch Tutorial: Architektur und Konzepte<\/h2>\n<p>Um die Funktionsweisen von ElasticSearch zu verstehen, muss man aktzepieren, dass es zwei Sachen gibt, mit denen man sich intensiv besch\u00e4ftigen muss: Das Physikalische und das Logische innerhalb von ElasticSearch.<\/p>\n<h3 id=\"elasticsearch-verstehen-logische-infrastruktur\">ElasticSearch verstehen: Logische Infrastruktur<\/h3>\n<p>Eine ElasticSearch Suite, so will ich das mal an dieser Stelle nennen, ist in Indexe, Typen und Dokumente aufgeteilt:<\/p>\n<figure id=\"attachment_404\" aria-describedby=\"caption-attachment-404\" style=\"width: 800px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch.jpg\"><img class=\"size-full wp-image-404\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch.jpg\" alt=\"Infografik #1: Schema einer logischen Datenstruktur von ElasticSearch\" width=\"800\" height=\"264\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch-300x99.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch-768x253.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-schema-einer-logischen-datenstruktur-von-elasticsearch-300x99@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-404\" class=\"wp-caption-text\">Infografik #1: Schema einer logischen Datenstruktur von ElasticSearch<\/figcaption><\/figure>\n<p>Die Terminologie verwirrt auf den ersten Blick, deswegen hier eine <strong>Step by Step<\/strong> Erkl\u00e4rung:<\/p>\n<h4 id=\"elasticsearch-was-ist-ein-index\">ElasticSearch: Was ist ein Index?<\/h4>\n<p>Einen ElasticSearch <strong>Index<\/strong> (siehe <code>Index1<\/code>, <code>Index2<\/code> und <code>Index2<\/code> in der Infografik) kann man mit einer Datenbank vergleichen. Dort werden alle Daten abgelegt, die irgendwann durchsucht werden sollen. Dieser Index wird in sogenannte <strong>Typen<\/strong> aufgeteilt.<\/p>\n<h4 id=\"elasticsearch-typen\">ElasticSearch: Typen<\/h4>\n<p>Typen (siehe <code>Type1<\/code>, <code>Type2<\/code>, <code>Type3<\/code> in der Infografik) sind f\u00fcr unsere Such-Engine wie Tabellen f\u00fcr eine Datenbank. Und wie eine normale Datenbank mehrere Tabellen beinhalten kann, kann auch unser Index mehrere Typen unterbringen. Die Typen selber lassen sich aber nat\u00fcrlich noch ein wenig zerlegen &#8211; in Dokumente.<\/p>\n<h4 id=\"elasticsearch-dokumente-mit-properties\">ElasticSearch: Dokumente mit Properties<\/h4>\n<p>ElasticSearch ist zwar keine klassische Datenbank, ben\u00f6tigt zum geschmeidigen Funktionieren aber dennoch etwas Struktur in den Daten. Die Dokumente (siehe insbesondere den Zweig <code>Document1<\/code> in der Infografik) werden deshalb mit Eigenschaften (<strong>Properties<\/strong>) versehen. Dort sind dann die eigentlichen Daten f\u00fcr die Suche gespeichert.<\/p>\n<p>Nennenswert ist hier das Feld <strong>source<\/strong>: Es beinhaltet standardm\u00e4\u00dfig alle Originaldaten, anhand deren die Attribute (sieh <code>attrib1<\/code>, <code>attrib2<\/code>, <code>attrib3<\/code>) entstanden sind, unabh\u00e4ngig davon, ob es diese Daten sinnvoll waren oder sogar Syntaxfehler gehabt haben. Ja, ElasticSearch speichert es einfach.<\/p>\n<h4 id=\"logische-infrastruktur-zusammenfassung\">Logische Infrastruktur: Zusammenfassung<\/h4>\n<p>ElasticSearch speichert also alle Daten in Index, die wiederum in Typen und Dokumente mit Eigenschaften aufgesplittet sind. Das war es zur Logik. Aber wie werden die Daten von ElasticSearch <em>physikalisch<\/em> abgelegt?<\/p>\n<h3 id=\"elasticsearch-erkl\u00e4rt-physikalische-infrastruktur\">ElasticSearch erkl\u00e4rt: Physikalische Infrastruktur<\/h3>\n<p>Wenn man Daten hat, muss man diese irgendwo speichern. Logisch: Auf irgendwelchen Festplatten. Und am Besten redundant und mit schnellem Zugriff. Genau das macht auch ElasticSearch f\u00fcr unsere Such-Daten.<\/p>\n<figure id=\"attachment_407\" aria-describedby=\"caption-attachment-407\" style=\"width: 800px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema-.jpg\"><img class=\"size-full wp-image-407\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema-.jpg\" alt=\"Infografik #2: ElasticSearch: Physikalische Infrastruktur eines Clusters (Schema)\" width=\"800\" height=\"162\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema-.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema--300x61.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema--768x156.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-infrastruktur-eines-clusters-schema--300x61@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-407\" class=\"wp-caption-text\">Infografik #2: ElasticSearch: Physikalische Infrastruktur eines Clusters (Schema)<\/figcaption><\/figure>\n<p>Nehmen wir mal an, wir kaufen zwei Server, die flei\u00dfig an unseren Suchanfragen arbeiten sollen. Wenn der eine (im oberen Bild <code>Machine1<\/code> genannt) aufgrund von schlechter Laune oder \u00dcberhitzung (zum Zeitpunkt des Verfassens dieses Artikels waren es 31 Grad im B\u00fcro) die laufende ElasticSearch-Instanz (<code>Node1<\/code>) nicht mehr bedienen kann, schreitet dann eben der zweite Server <code>Machine2<\/code> ein auf dem ebenfalls eine Instanz <code>Node2<\/code> l\u00e4uft. Sie arbeiten also Hand in Hand und verteilen zudem die Sucharbeit, weil sich beide im selben <strong>Cluster<\/strong> befinden.<\/p>\n<p>Die Daten eines ElasticSearch Index werden aufgesplittet in sogenannte <strong>Shards<\/strong>. W\u00f6rtlich \u00fcbersetzt hei\u00dft es &#8222;Scherbe&#8220; und verh\u00e4lt sich auch so. Denn wenn man einen Node mit den Default-Einstellungen startet und ihn mit Daten f\u00fcttert, erstellt er automatisch einen Index mit <strong>f\u00fcnf Shards<\/strong>. Er zersplittert sozusagen den Index wie einen Spiegel in f\u00fcnf Scherben. Und wenn zus\u00e4tzliche Nodes im Cluster anwesend sind, verteilt ElasticSearch die Scherben mehr oder weniger gerecht auf die Nodes. Der eine bekommt also drei der andere zwei Shards.<\/p>\n<figure id=\"attachment_409\" aria-describedby=\"caption-attachment-409\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img class=\"size-full wp-image-409\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-aufteilung-der-indexe.jpg\" alt=\"Infografik #3: ElasticSearch: Physikalische Aufteilung der Indexe\" width=\"800\" height=\"191\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-aufteilung-der-indexe.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-aufteilung-der-indexe-300x72.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-aufteilung-der-indexe-768x183.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-aufteilung-der-indexe-300x72@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-409\" class=\"wp-caption-text\">Infografik #3: ElasticSearch: Physikalische Aufteilung der Indexe<\/figcaption><\/figure>\n<p>Und weil unsere Datenscherben so wertvoll sind, sollte man wenigstens ein Backup davon erstellen. Auch das macht ElasticSearch f\u00fcr uns. Man kann dem System n\u00e4mlich sagen, wie viele Replikate der Shards man haben m\u00f6chte. Diese werden dann intelligent auf die Nodes aufgeteilt. Beispiel:<\/p>\n<table>\n<thead>\n<tr class=\"header\">\n<th align=\"left\">Shard-Nr.<\/th>\n<th align=\"left\">Shard-Node<\/th>\n<th align=\"left\">Replikat-Node<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td align=\"left\">1<\/td>\n<td align=\"left\">Node1<\/td>\n<td align=\"left\">Node2<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">2<\/td>\n<td align=\"left\">Node1<\/td>\n<td align=\"left\">Node2<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">3<\/td>\n<td align=\"left\">Node1<\/td>\n<td align=\"left\">Node2<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">4<\/td>\n<td align=\"left\">Node2<\/td>\n<td align=\"left\">Node1<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">5<\/td>\n<td align=\"left\">Node2<\/td>\n<td align=\"left\">Node1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Beim Ausfall eines Nodes werden dann die Replikate in einen normalen Shard umgewandelt und somit bleibt die Suchfunktion unbeeintr\u00e4chtigt.<\/p>\n<p>Bei einer ElasticSearch Suite mit zwei Nodes und folgender Konstellation &#8230;<\/p>\n<table>\n<thead>\n<tr class=\"header\">\n<th align=\"left\">Index-Name<\/th>\n<th align=\"left\">Shards-Anzahl<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td align=\"left\">Index1<\/td>\n<td align=\"left\">5<\/td>\n<\/tr>\n<tr class=\"even\">\n<td align=\"left\">Index2<\/td>\n<td align=\"left\">2<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td align=\"left\">Index3<\/td>\n<td align=\"left\">1<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#8230; sieht das ganze schematisch wie folgt aus:<\/p>\n<figure id=\"attachment_410\" aria-describedby=\"caption-attachment-410\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img class=\"size-full wp-image-410\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-datenstruktur-mit-mehreren-nodes.jpg\" alt=\"Infografik #4: ElasticSearch: Physikalische Datenstruktur mit mehreren Nodes\" width=\"800\" height=\"239\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-datenstruktur-mit-mehreren-nodes.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-datenstruktur-mit-mehreren-nodes-300x90.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-datenstruktur-mit-mehreren-nodes-768x229.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-physikalische-datenstruktur-mit-mehreren-nodes-300x90@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-410\" class=\"wp-caption-text\">Infografik #4: ElasticSearch: Physikalische Datenstruktur mit mehreren Nodes<\/figcaption><\/figure>\n<h3 id=\"elasticsearch-konkretes-beispiel-mit-strukturen\">ElasticSearch: Konkretes Beispiel mit Strukturen<\/h3>\n<p>Um das Wissen nun etwas zusammenzufassen und zu konkretisieren werden wir jetzt nochmal zu unserem Beispiel <strong>MyMarketOnline<\/strong> zur\u00fcckkehren. Wir lassen ElasticSearch einen Index <code>MyOnlineMarket<\/code> erstellen. Dort werden die Typen <code>Verk\u00e4ufer<\/code> und <code>Artikel<\/code> angelegt und mit verschiedenen Properties gef\u00fcllt. Nachdem ElasticSearch mit Daten sattgef\u00fcttert wurde, muss es diese Daten irgendwo speichern. In unserem Beispiel werden wir f\u00fcr dieses kleine Projekt nur einen Shard verwenden, also als die kleinste Fallback-L\u00f6sung. Dieser Shard wir im <code>Node1<\/code> in Original gespeichert und im <code>Node2<\/code> als Replikat. Somit sind wir auf der sicheren Seite. Die nachfolgenden Infografiken verdeutlichen noch ein wenig mehr den Zusammenhang:<\/p>\n<figure id=\"attachment_411\" aria-describedby=\"caption-attachment-411\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img class=\"size-full wp-image-411\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-logisch.jpg\" alt=\"Infografik #5: ElasticSearch Beispiel MyOnlineMarket: Logisch\" width=\"800\" height=\"226\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-logisch.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-logisch-300x85.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-logisch-768x217.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-logisch-300x85@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-411\" class=\"wp-caption-text\">Infografik #5: ElasticSearch Beispiel MyOnlineMarket: Logisch<\/figcaption><\/figure>\n<figure id=\"attachment_412\" aria-describedby=\"caption-attachment-412\" style=\"width: 800px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch.jpg\"><img class=\"size-full wp-image-412\" src=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch.jpg\" alt=\"Infografik #6: ElasticSearch Beispiel MyOnlineMarket: Physikalisch\" width=\"800\" height=\"152\" srcset=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch.jpg 800w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch-300x57.jpg 300w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch-768x146.jpg 768w, https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/infografik-elasticsearch-beispiel-myonlinemarket-physikalisch-300x57@2x.jpg 600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-412\" class=\"wp-caption-text\">Infografik #6: ElasticSearch Beispiel MyOnlineMarket: Physikalisch<\/figcaption><\/figure>\n<h2 id=\"elasticsearch-infrastruktur-verstehen-sinnvoll\">ElasticSearch Infrastruktur verstehen sinnvoll<\/h2>\n<p>Mit diesen Kenntnissen kann man sich jetzt an kleinere und gr\u00f6\u00dfere ElasticSearch-Projekte setzen. Wenn dann ein Shard im Cluster auf einen Node umzieht oder bestimmte Indexe Probleme machen, steht man nicht mehr vor b\u00f6hmischen D\u00f6rfern. Jetzt wei\u00df man (hoffentlich), wo man was zu analysieren und anzupacken hat.<\/p>\n<hr \/>\n<p>Bildnachweis: \u00a9 Titelbild: shutterstock &#8211; Md Aziman, alle anderen schwarzer.de<!-- <\/ezTOC> --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Suchserver ElasticSearch ist schwer im Kommen. Geschwindigkeit, Anpassbarkeit und Verl\u00e4sslichkeit sind nur einige wenige seiner St\u00e4rken. Bevor man sich [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":766,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[52,287],"tags":[357,358,359,360,361],"features_image":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg","rk_cat":null,"rk_date":"03.07.2015","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog\" \/>\n<meta property=\"og:description\" content=\"Der Suchserver ElasticSearch ist schwer im Kommen. Geschwindigkeit, Anpassbarkeit und Verl\u00e4sslichkeit sind nur einige wenige seiner St\u00e4rken. Bevor man sich [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/\" \/>\n<meta property=\"og:site_name\" content=\"Schwarzer.de Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-03T10:38:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-21T11:31:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"335\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hans-J\u00fcrgen Schwarzer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\",\"url\":\"https:\/\/schwarzer.de\/blog\/\",\"name\":\"Schwarzer.de Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/schwarzer.de\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#primaryimage\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg\",\"contentUrl\":\"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg\",\"width\":700,\"height\":335,\"caption\":\"ElasticSearch Tutorial: Das Konzept verstehen\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#webpage\",\"url\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/\",\"name\":\"ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog\",\"isPartOf\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#primaryimage\"},\"datePublished\":\"2015-07-03T10:38:42+00:00\",\"dateModified\":\"2020-09-21T11:31:19+00:00\",\"author\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\"},\"breadcrumb\":{\"@id\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/schwarzer.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ElasticSearch Tutorial: Das Konzept verstehen\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a\",\"name\":\"Hans-J\u00fcrgen Schwarzer\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/schwarzer.de\/blog\/#personlogo\",\"inLanguage\":\"de-DE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g\",\"caption\":\"Hans-J\u00fcrgen Schwarzer\"},\"description\":\"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.\",\"url\":\"#\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/","og_locale":"de_DE","og_type":"article","og_title":"ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog","og_description":"Der Suchserver ElasticSearch ist schwer im Kommen. Geschwindigkeit, Anpassbarkeit und Verl\u00e4sslichkeit sind nur einige wenige seiner St\u00e4rken. Bevor man sich [&hellip;]","og_url":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/","og_site_name":"Schwarzer.de Blog","article_published_time":"2015-07-03T10:38:42+00:00","article_modified_time":"2020-09-21T11:31:19+00:00","og_image":[{"width":700,"height":335,"url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"Hans-J\u00fcrgen Schwarzer","Gesch\u00e4tzte Lesezeit":"6 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/schwarzer.de\/blog\/#website","url":"https:\/\/schwarzer.de\/blog\/","name":"Schwarzer.de Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/schwarzer.de\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#primaryimage","inLanguage":"de-DE","url":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg","contentUrl":"https:\/\/schwarzer.de\/blog\/wp-content\/uploads\/2015\/07\/elasticsearch-tutorial-das-konzept-verstehen.jpg","width":700,"height":335,"caption":"ElasticSearch Tutorial: Das Konzept verstehen"},{"@type":"WebPage","@id":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#webpage","url":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/","name":"ElasticSearch Tutorial: Das Konzept verstehen - Schwarzer.de Blog","isPartOf":{"@id":"https:\/\/schwarzer.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#primaryimage"},"datePublished":"2015-07-03T10:38:42+00:00","dateModified":"2020-09-21T11:31:19+00:00","author":{"@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a"},"breadcrumb":{"@id":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/schwarzer.de\/blog\/elasticsearch-tutorial-das-konzept-verstehen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/schwarzer.de\/blog\/"},{"@type":"ListItem","position":2,"name":"ElasticSearch Tutorial: Das Konzept verstehen"}]},{"@type":"Person","@id":"https:\/\/schwarzer.de\/blog\/#\/schema\/person\/b4ffeb0c116fc217c80baefd49bc381a","name":"Hans-J\u00fcrgen Schwarzer","image":{"@type":"ImageObject","@id":"https:\/\/schwarzer.de\/blog\/#personlogo","inLanguage":"de-DE","url":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/64690c1ea3ab46fac7afd4778bc78364?s=96&d=mm&r=g","caption":"Hans-J\u00fcrgen Schwarzer"},"description":"Hans-J\u00fcrgen Schwarzer leitet die Digital-Agentur schwarzer.de software + internet gmbh. Als Unternehmer und Verleger in Personalunion wie auch als leidenschaftlicher Blogger geh\u00f6rt er zu den Hauptautoren verschiedener Online-Magazine. Innerhalb seiner breiten Palette an Themen liegen dem Mainzer Lokalpatrioten dabei vermeintlich \u201eschr\u00e4ge\u201c Ideen und technische Novit\u00e4ten besonders am Herzen - Nerdstuff, wie es heute hei\u00dft.","url":"#"}]}},"_links":{"self":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/403"}],"collection":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/comments?post=403"}],"version-history":[{"count":12,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/403\/revisions"}],"predecessor-version":[{"id":1323,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/posts\/403\/revisions\/1323"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media\/766"}],"wp:attachment":[{"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/media?parent=403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/categories?post=403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schwarzer.de\/blog\/wp-json\/wp\/v2\/tags?post=403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}