What is our primary use case?
For me, the primary use case of Elasticsearch is log analysis, as it is a text-based search tool. To explain how it works, let's consider its role at the backend. Elasticsearch operates on keywords used to fetch data. This is in contrast to some databases, where operations might be based on a key order or a primary key, allowing for various maintenance and analysis tasks.
Many people use Elasticsearch to store their application logs in JSON format. These logs are indexed, facilitating efficient search and analysis. Additionally, Elasticsearch integrates well with tools like Grafana and Kibana, enabling users to create diverse dashboards for data visualization.
There's also the text-based search scenario. For instance, if a user wants to search for something using a specific keyword, Elasticsearch excels in this area by creating multiple indices.
Elasticsearch is a versatile tool that can store and retrieve information effectively, making it suitable for various applications across different industries.
What is most valuable?
Elasticsearch is a quick search engine tool. A good use case is saving metadata of your systems for data cataloging. Various systems, like those opened in metadata and similar applications, use Elasticsearch to store their text data. However, the major use case for many is to store application logs and build different dashboards on top of it.
What needs improvement?
The use of Elasticsearch is very specific. It is not helpful for storing your OLTP data. Elasticsearch's specific use is when you need to provide text-based search functionality. That's when Elasticsearch becomes relevant.
For instance, for log analysis or searching values, Elasticsearch performs very well. However, there are challenges with performance management and scalability, particularly how developers manage these aspects.
For example, Kubernetes is a popular choice as it offers the needed features to run your application and allows performance optimization in response to increased system load, and managing itself. If you plan to deploy Elasticsearch with limited or predefined resources, it may not be the ideal setup.
Therefore, it's better to create ultimate commerce capabilities for it. This is the challenge people are facing in the market and the solution for it. So, this answer combines two aspects: the challenge and its solution.
For how long have I used the solution?
I have been using Elasticsearch for almost a year now. I'm comfortable working with it and understand its functionalities.
What do I think about the scalability of the solution?
In our organization, it's not so much about the number of people as it is about the number of products utilizing it. Currently, we use Elasticsearch in more than 12 products.
It's become essential for any component that requires text-based functionality. Besides that, it's also used for logging to analyze application performance, peak times, etc. Elasticsearch is a basic component of the architecture for each of these products.
How are customer service and support?
Most of our deployments are not exposed to the Internet or public networks; they're restricted to closed networks. We don’t frequently upgrade from previous versions unless a specific use case arises.
In such cases, we usually turn to the developer community for support.
Another scenario is when running the application in a careful mode, where the main requirement is to change the image name in the configuration. Then, we check for any changes or incompatibilities with previous versions. Upgrades can sometimes introduce issues if they’re not compatible with existing configuration files, but it's generally not too problematic to handle.
How was the initial setup?
Deploying in Kubernetes is not complex. There are many resources in the market, like DevOps guys and guides, which make the process straightforward. The deployment can be done in a matter of minutes. You basically run a configuration file to set up your application, define replicas, and so on. It shouldn't take much time; even with an expert, it's a matter of a few hours.
However, the key lies in following best practices and configuring your files properly. If you follow the best practices, you'll likely face fewer issues. But if not, problems are inevitable.
It’s crucial to analyze these practices, considering factors like bandwidth, data volume, user interaction, and how it's read by different applications. These considerations help in managing resources and scalability, including scaling up and down your Elasticsearch container. These points are vital for running Elasticsearch efficiently, especially for text-based search applications.
You can deploy it as required. Elasticsearch is versatile; you can run it on Kubernetes, in the cloud, or on-premises. There is no limitation in terms of deployment options.
What's my experience with pricing, setup cost, and licensing?
The cost varies based on factors like usage volume, network load, data storage size, and service utilization. If your usage isn't too extensive, the cost will be lower.
However, if you're dealing with high volumes, you'll need to reconsider the cost-effectiveness. If there are no challenges or bottlenecks in buying a service from a cloud service provider, that might be a viable option.
But if you're concerned about price or issues like exposing your data to the public cloud, then deploying on-premises and conducting stress testing becomes important. It’s a part of the learning and development process, not just a deployment for production.
You need to pass through testing processes in the development environment and then move to staging and production. This involves various tests to understand user access patterns, data push, and performance assessment. Deploying on your own requires considering all these factors. On the other hand, if you use a cloud service, many of these concerns aren't your responsibility.
What other advice do I have?
If you're interested in using Elasticsearch as a search tool and for cloud data integration, comparing it with alternatives like Amazon Cloud Search or Azure Search is valid. Many cloud service providers that offer text-search services are utilizing Elasticsearch. They've implemented best practices and resolved a myriad of issues experienced by companies using Azure, AWS, or GCP.
These providers have integrated Elasticsearch into their cloud offerings effectively. Choosing their services might be preferable due to lower operational costs on your side.
In case of any disaster or issue, their development and DevOps teams are available to support you. However, if you face limitations, like client requirements prohibiting data storage in public or private clouds, then deploying Elasticsearch on-premises would be your alternative.
I would definitely rate it an eight out of ten, which is very good. The reason is the active community continuously working on it, and the support from contributors and the support team is notable. Because Elasticsearch is very specific in its use cases.
It excels in text-based search and creating dashboards for application logs. It provides results and functionality that are hard to find in alternative tools. So, if you have a use case that fits, Elasticsearch is a great service without any direct alternatives.
*Disclosure: I am a real user, and this review is based on my own experience and opinions.