{"id":9536,"date":"2022-09-23T12:37:00","date_gmt":"2022-09-23T17:37:00","guid":{"rendered":"https:\/\/www.rushworth.us\/lisa\/?p=9536"},"modified":"2022-10-18T12:59:26","modified_gmt":"2022-10-18T17:59:26","slug":"opensearch-evaluation-overview-2","status":"publish","type":"post","link":"https:\/\/www.rushworth.us\/lisa\/?p=9536","title":{"rendered":"OpenSearch Evaluation Overview"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"OpenSearchEvaluationOverview-WhatisElasticSearch?\">What is ElasticSearch?<\/h1>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/www.elastic.co\/\" target=\"_blank\">ElasticSearch<\/a>, based on the <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/apache\/lucene\" target=\"_blank\">Lucene search software<\/a>, is a distributed search and analytics application which ingests, stores, and indexes data. Kibana is a web-based front-end providing user access to data stored within ElasticSearch.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"OpenSearchEvaluationOverview-WhatisOpenSearch?\">What is OpenSearch?<\/h1>\n\n\n\n<p>In short, it&#8217;s the same but different. OpenSearch is also based on the Lucene search software, is designed to be a distributed search and analytics application, and ingests\/stores\/indexes data. If it&#8217;s essentially the same thing, <em>why<\/em> does OpenSearch exist? ElasticSearch was initially licensed under the open-source Apache 2.0 license \u2013 a rather permissive free software license. <a rel=\"noreferrer noopener\" href=\"https:\/\/www.elastic.co\/blog\/why-license-change-aws\" target=\"_blank\">ElasticCo did not agree with how their software was being used by Amazon<\/a>; and, in 2021, the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.elastic.co\/blog\/licensing-change\" target=\"_blank\">license for ElasticSearch was changed to Server Side Public License<\/a> (SSPL). One of the requirements of SSPL is that anyone who implements the software and sells their implementation as a service needs to publish their source code under the SSPL license \u2013 not just changes made to the original program but <em>all<\/em> other software a user would require to run the software-as-a-service environment for themselves. Amazon used ElasticSearch for their Amazon Elasticsearch Service offering, but was unable\/unwilling to continue doing so under the new license terms. In April of 2021, <a rel=\"noreferrer noopener\" href=\"https:\/\/aws.amazon.com\/blogs\/opensource\/introducing-opensearch\/\" target=\"_blank\">Amazon Web Services created a fork of ElasticSearch as the basis for OpenSearch<\/a>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"OpenSearchEvaluationOverview-DifferencesBetweenOpenSearchandElasticSearch\">Differences Between OpenSearch and ElasticSearch<\/h1>\n\n\n\n<p>After the OpenSearch fork was created, the product roadmap for ElasticSearch was driven by ElasticCo and the <a href=\"https:\/\/github.com\/orgs\/opensearch-project\/projects\/1\" rel=\"noreferrer noopener\" target=\"_blank\">roadmap for OpenSearch<\/a> was community driven (with significant oversight and input from Amazon) \u2013 this means the products are not identical although they provide the same core functionality. Elastic publishes a list of <a href=\"https:\/\/www.elastic.co\/what-is\/opensearch#what-are-some-elasticsearch-and-kibana-features-that-are-not-available-in-the-opensearch-project\" rel=\"noreferrer noopener\" target=\"_blank\">features unique to ElasticSearch<\/a>, and the underlying machine learning algorithms are different. However, the important components of the &#8220;unique&#8221; feature list have been implemented in OpenSearch over time.<\/p>\n\n\n\n<p>The biggest differences are price and support. OpenSearch is free software \u2013 there is no purchasing a license to unlock features. It <em>does<\/em> appear that Amazon has an internal iteration of OpenSearch as their as-a-service offering provides features not available in the open-source OpenSearch code base, but that is only available for cloud customers. ElasticCo offers ElasticSearch as free software with a limited feature set. One critical limitation is user authentication mechanisms \u2013 we are unable to implement PingID as an authentication source with the free feature set. Advanced features not currently used today&nbsp;\u2013 machine learning based anomaly detection, as an example &#8211; are also unavailable in the free iteration of ElasticSearch. With an ElasticSearch license, we would also get vendor support. OpenSearch does not offer vendor support, although there are third party companies that will provide support services.<\/p>\n\n\n\n<p>Both OpenSearch and ElasticSearch have community-based support forums available \u2013 I have gotten responses from developers on both forums for questions regarding usage nuances.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"OpenSearchEvaluationOverview-SalientFeatureComparison\">Salient Feature Comparison<\/h1>\n\n\n\n<p>Most companies have a list differentiating their product from the products offered by competitors \u2013 but the important thing is how the products differ as it relates to how an individual customer uses the product. A car that can have a fresh cup of espresso waiting for you as you leave for work might be amazing to some people, but those who don&#8217;t drink coffee won&#8217;t be nearly as impressed. So how do the two products compare <em>for Windstream<\/em>?<\/p>\n\n\n\n<p><strong>Data ingestion<\/strong> \u2013 Data is ingested using the same mechanisms \u2013 ElasticCo&#8217;s filebeat and logstash are important components of data ingestion, and these components remain unchanged. This means existing processes that feed data into ElasticSearch today would not need to be changed to begin ingesting data into OpenSearch.<\/p>\n\n\n\n<p><strong>Data storage<\/strong> \u2013 Both products distribute searchable data over a cluster of servers. Data storage is &#8220;tiered&#8221; as hot, warm, and cold which allows less used data to reside on slower, less expensive resources. We have confirmed that ingested data is properly housed on cluster nodes designated for &#8216;hot&#8217; storage and moved to &#8216;warm&#8217; and &#8216;cold&#8217; storage as dictated by defined policies. The item count to size ratio is similar between both products (i.e. storing ten million documents takes&nbsp;<em>about<\/em> the same amount of disk space). OpenSearch provides the ability to alert on transition failures (moving from hot to warm, for instance) which will reduce the amount of manual &#8220;health checking&#8221; required for the environment.<\/p>\n\n\n\n<p><strong>Search and aggregation<\/strong> \u2013 Both products allow both GUI and API searches of indexed data. Data can be aggregated as it is searched&nbsp;\u2013 returning the max\/min\/average value from a search, a count of records matching search criterion, creating sub-aggregations. ElasticSearch does have aggregations not available in OpenSearch, although these could be handled through custom scripted aggregations and many have corresponding GitHub issues requesting such an aggregation be added to OpenSearch (e.g. <a href=\"https:\/\/github.com\/opensearch-project\/OpenSearch-Dashboards\/issues\/1010\" rel=\"noreferrer noopener\" target=\"_blank\">weighted average<\/a>, <a href=\"https:\/\/github.com\/opensearch-project\/OpenSearch\/issues\/4071\" rel=\"noreferrer noopener\" target=\"_blank\">geohash grid<\/a>, or <a href=\"https:\/\/github.com\/opensearch-project\/OpenSearch\/issues\/4072\" rel=\"noreferrer noopener\" target=\"_blank\">geotile grid<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><\/tr><\/thead><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><\/tr><\/thead><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>auto-interval date histogram<\/td><td>x<\/td><td><\/td><\/tr><tr><td>categorize text<\/td><td>x<\/td><td><\/td><\/tr><tr><td>children<\/td><td>x<\/td><td><\/td><\/tr><tr><td>composite<\/td><td>x<\/td><td><\/td><\/tr><tr><td>frequent items<\/td><td>x<\/td><td><\/td><\/tr><tr><td>geohex grid<\/td><td>x<\/td><td><\/td><\/tr><tr><td>geotile grid<\/td><td>x<\/td><td><\/td><\/tr><tr><td>ip prefix<\/td><td>x<\/td><td><\/td><\/tr><tr><td>multi terms<\/td><td>x<\/td><td><\/td><\/tr><tr><td>parent<\/td><td>x<\/td><td><\/td><\/tr><tr><td>random sampler<\/td><td>x<\/td><td><\/td><\/tr><tr><td>rare terms<\/td><td>x<\/td><td><\/td><\/tr><tr><td>terms<\/td><td>x<\/td><td><\/td><\/tr><tr><td>variable width histogram<\/td><td>x<\/td><td><\/td><\/tr><tr><td>boxplot<\/td><td>x<\/td><td><\/td><\/tr><tr><td>geo-centroid<\/td><td>x<\/td><td><\/td><\/tr><tr><td>geo-line<\/td><td>x<\/td><td><\/td><\/tr><tr><td>median absolute deviation<\/td><td>x<\/td><td><\/td><\/tr><tr><td>rate<\/td><td>x<\/td><td><\/td><\/tr><tr><td>string stats<\/td><td>x<\/td><td><\/td><\/tr><tr><td>t-test<\/td><td>x<\/td><td><\/td><\/tr><tr><td>top metrics<\/td><td>x<\/td><td><\/td><\/tr><tr><td>weighted avg<\/td><td>x<\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Alerting<\/strong> \u2013 ElastAlert2 can be used to provide the same index monitoring and alerting functionality that ElastAlert currently provides with ElasticSearch. Additionally, OpenSearch includes a built-in alerting capability that might allow us to streamline the functionality into the base OpenSearch implementation.&nbsp;<\/p>\n\n\n\n<p><strong>API Access<\/strong> \u2013 Both ElasticSearch and OpenSearch provide API-based access to data. Queries to the ElasticSearch API endpoint returned expected data when directed to the OpenSearch API endpoint. The ElasticSearch python module can be used to access OpenSearch data, although there is a specific OpenSearch module as well.<\/p>\n\n\n\n<p><strong>UX<\/strong> \u2013 ElasticSearch allows users to search and visualize data through Kibana; OpenSearch provides graphical user access in OpenSearch Dashboard. While the &#8220;look and feel&#8221; of the GUI differs (Kibana 8 looks different than the Kibana 7 we use today, too), the user functionality remains the same.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Kibana 7.7<\/td><td>OpenSearch Dashboards 2.2<\/td><\/tr><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"136\" class=\"wp-image-9537\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77.png 1163w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77-300x136.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77-1024x464.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77-768x348.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-77-750x340.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"136\" class=\"wp-image-9538\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22.png 1182w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22-300x136.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22-1024x463.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22-768x348.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-22-750x339.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Kibana uses &#8220;KQL&#8221; \u2013 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.elastic.co\/guide\/en\/kibana\/7.7\/kuery-query.html\" target=\"_blank\">Kibana Query Language<\/a>\u00a0\u2013 to compose searches while OpenSearch Dashboards uses &#8220;DQL&#8221; &#8211; Dashboards Query Language, but queries used in Kibana were used in OpenSearch Dashboard without modification.<\/p>\n\n\n\n<p>Currently used visualizations are available in both Kibana and OpenSearch Dashboards<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Kibana Visualization<\/td><td>OpenSearch Dashboards Visualization<\/td><\/tr><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"96\" class=\"wp-image-9539\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan.png 1127w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan-300x96.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan-1024x329.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan-768x247.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Scan-750x241.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"104\" class=\"wp-image-9540\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Visualization.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Visualization.png 915w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Visualization-300x104.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Visualization-768x266.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Visualization-750x260.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>But there are some currently unused visualizations that are unique to each product.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><\/tr><\/thead><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Area<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Controls<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Data Table<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Gauge<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Goal<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Heat Map<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Horizonal Bar<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Lens<\/td><td>x<\/td><td><\/td><\/tr><tr><td>Line<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Maps<\/td><td>x<\/td><td><\/td><\/tr><tr><td>Markdown<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Metric<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Pie<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Tag Cloud<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Timeline<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>TSVB<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Vega<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Vertical Bar<\/td><td>x<\/td><td>x<\/td><\/tr><tr><td>Coordinate Map<\/td><td><\/td><td>x<\/td><\/tr><tr><td>Gantt Chart<\/td><td><\/td><td>x<\/td><\/tr><tr><td>Region Map<\/td><td><\/td><td>x<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Dashboards can be used to group visualizations.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Kibana<\/td><td>OpenSearch Dashboards<\/td><\/tr><tr><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"128\" class=\"wp-image-9541\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard.png 1144w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard-300x128.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard-1024x439.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard-768x329.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/ES-Dashboard-750x321.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><td><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"121\" class=\"wp-image-9542\" style=\"width: 300px;\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard.png\" alt=\"\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard.png 1106w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard-300x121.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard-1024x414.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard-768x310.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2022\/10\/OS-Dashboard-750x303.png 750w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>New features will be available in either OpenSearch or a licensed installation of ElasticSearch. Currently data is either retained as written or aged out of the system to save disk space. Either path allows us to roll up data \u2013 as an example retaining the total number of users per month or total bytes per month instead of retaining each detailed record. Additionally, we will be able to use the &#8220;anomaly detection&#8221; which is able to monitor large volumes of index data and highlight unusual events. Both newer ElasticSearch versions and OpenSearch offer a Tableau connector which may make data stored in the platform more accessible to users.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is ElasticSearch? ElasticSearch, based on the Lucene search software, is a distributed search and analytics application which ingests, stores, and indexes data. Kibana is a web-based front-end providing user access to data stored within ElasticSearch. What is OpenSearch? In short, it&#8217;s the same but different. OpenSearch is also based on the Lucene search software, &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1588],"tags":[1590,1591,1740,1741],"class_list":["post-9536","post","type-post","status-publish","format-standard","hentry","category-elk","tag-elasticsearch","tag-kibana","tag-opensearch","tag-opensearch-dashboard"],"_links":{"self":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9536","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9536"}],"version-history":[{"count":1,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9536\/revisions"}],"predecessor-version":[{"id":9543,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/9536\/revisions\/9543"}],"wp:attachment":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9536"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9536"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9536"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}