Elasticsearch是一个分布式、高性能、可扩展、全文搜索引擎。它借鉴了诸如Apache Lucene等搜索引擎的精华,并在此基础上不断扩展。
一、概述
Elasticsearch最初由Shay Banon在2010年创建,主要基于Lucene。Elasticsearch基于Apache Lucene构建,通常作为全文搜索引擎使用,支持分布式部署,和强大的RESTful API。Elasticsearch为企业提供强大的搜索和分析功能。
Elasticsearch 可以轻松扩展以处理大量数据以及高并发的搜索和写入操作。它提供了简单的 RESTful API,具有快速的速度,分布式实例之间的性能和数据分散。
二、安装及部署
首先,需要到官网下载 Elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-linux-x86_64.tar.gz
可以将其解压到某一目录下,例如:
tar -xvf elasticsearch-7.12.1-linux-x86_64.tar.gz
然后,可以启动 Elasticsearch:
cd elasticsearch-7.12.1/bin ./elasticsearch
可以用浏览器访问:http://localhost:9200/,返回类似以下的json格式内容:
{ "name" : "node-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "gkQ7KsF-RHmB89WmWFx5zw", "version" : { "number" : "7.12.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7", "build_date" : "2021-04-20T20:56:39.040728659Z", "build_snapshot" : false, "lucene_version" : "8.8.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
三、数据操作
Elasticsearch 是一个文档数据库,数据以文档(document)为单位组织。一个文档可以是纯文本、JSON 甚至是二进制数据,它们是以 JSON 格式存储在 Elasticsearch 中。
可以通过RESTful API来操作数据。例如,创建一个名为“tag”的索引,可以执行以下命令:
PUT /tag
然后,可以添加文档到索引当中:
POST /tag/_doc/1 { "name": "elasticsearch", "description": "一个分布式、高性能、可扩展、全文搜索引擎" }
接着,可以使用以下的查询来查询数据:
GET /tag/_search { "query": { "match": { "name": "elasticsearch" } } }
上述查询会返回 name 中包含 “elasticsearch” 字符串的所有文档。这里,文档是以 JSON 格式返回的,有利于与应用程序集成。
四、集群和扩展性
Elasticsearch支持集群模式,让您可以将数据分片至多台服务器,以避免单点故障,提高可用性。
在 Elasticsearch 中,数据被拆分成多个碎片(片段)。因此,可以将这些片段分布到不同的服务器上。许多服务器之间可以共享责任,最终提供一个强大的搜索功能。此外,当增加较多的数据时,也可以轻松地添加额外的节点。
五、Elasticsearch性能调优
Elasticsearch 通过增加数据节点来提高搜索性能。另外,可以调整以下参数来提高 Elasticsearch的搜索速度:
1.并发级别的增加
2.调整 Lucene 的近似估计阈值
3.提升 JVM 堆内存大小
4.使用最新的 Elasticsearch 版本
六、Elasticsearch的应用案例
Elasticsearch被广泛应用于许多企业和网站,主要应用的场景包括:
1.搜索引擎
2.日志收集和搜索
3.商业智能
4.安全分析
七、结论
以上就是关于Elasticsearch搜索引擎的简单介绍和使用方法。通过这些方法,可以了解Elasticsearch的基础知识、安装、数据操作、集群扩展和调优以及应用案例等方面。希望这篇文章对您有所帮助。