Elasticsearch+head+Ik中文分词器的安装以及Go操作Elasticsearch

本文介绍了Elasticsearch的核心概念,包括集群、节点、索引、文档、映射、分片和副本。详细阐述了Elasticsearch的优缺点,并提供了单机版安装步骤和RESTful API的增删改查操作。此外,还探讨了Go语言如何与Elasticsearch交互,包括高亮显示的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go操作Elasticsearch

一、elasticsearch是什么

elasticsearch是一个基于Lucene的搜索服务器,采用Java语言编写,使用Lucene构建索引、提供搜索功能,并作为Apache许可条款下的开发源码发布,是当前流行的企业级搜索引擎。其实Lucene的功能已经很强大了,为什么还要多此一举的开发elasticsearch呢?原因是因为Lucene只是一个由Java语言编写的库,对不适用Java语言的开发人员并不友好。所以elasticsearch在Lucene上做了很多改进,提供了多种语言的接口。Lucene之于elasticsearch堪比发动机之于汽车,elasticsearch底层使用的仍然是Lucene的api,Lucene专注于底层搜索的建设,elasticsearch专注于企业应用。elasticsearch的目标是让全文搜索变得简单,开发者可以通过简单明了的restful api轻松实现搜索功能,而不必去面对Lucene的复杂性。

二、 elasticsearch的优点

  1. 分布式:Elasticsearch横向扩展非常方便灵活,当规模较小时可以使用小规模的集群,随着数据的增长,需要更大的容量和更高的性能,此时只需增加更多的节点,Elasticsearch的自动发现机制会识别新增的节点并重新平衡分配数据。
  2. 全文检索:Apache Lucene是一个用Java编写的高性能的功能齐全的信息检索库,Elasticsearch在底层使用Lucene来提供强大的全文检索,提供任何开源产品的能力。自带多语言支持、强大的查询语言、地理位置支持,上下文感知的建议、自动完成和搜索片段。
  3. 近实时搜索和分析:数据进入Elasticsearch后,可达到实时搜索。Elasticsearch还支持聚合分析操作
  4. 高可用:高可用主要体现在容错方面,Elasticsearch集群会自动发现新的或失败的节点,重组和重新平衡数据,确保数据是安全和可访问的。
  5. 模式自由:Elasticsearch的动态mapping机制可以自动的检测数据的结构和类型,创建索引,并使数据可搜索。
  6. Restful Api:Elasticsearch是Api驱动,几乎任何操作都可以用一个简单的Restful Api使用JSON基于HTTP请求实现,客户端也可使用多种编程语言。
  7. 应用场景丰富:站内搜索、nosql数据库(Elasticsearch在读写性能上由于MongoDB,同时也支持地理位置查询)、日志分析(日志分析平台ELK,能够对日志进行集中的收集、存储、搜索、分析、监控以及可视化)等。

三 、elasticsearch核心概念

来源: https://www.jianshu.com/p/cec1b8b3698d

集群(cluster)

代表一个集群,集群中有多个节点node,其中一个为主节点,这个主节点可以通过选举产生的,主节点是对于集群内部来说的。ES的一个概念就是去中心化,字面上理解就是无中心化节点,这是对于集群外部来说的,因为从外部来看ES集群,在逻辑上是一个整体,你与任何一个节点的通信和整个ES集群通信是等价的。一个集群就是由一个或者多个节点组织在一起,它们共同持有整个的数据,并在一起提供索引和搜索功能。一个集群由一个唯一的名字标识。一个节点只能通过指定某个集群的名字,来加入这个集群。

节点(node)

一个节点是集群中的一个服务器,作为集群的一部分,存储数据,参与集群的索引和搜索功能。一个节点也是由一个名字来标识的。默认情况下,这个名字是一个随机的漫威漫画角色的名字,这个名字会在启动的时候赋予节点,这个名字对于管理工作来说挺重要的,因为在这个管理过程中,要确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。

索引(index)

ES将它的数据存储在一个或多个索引(index)中。类似sql中的数据库。可以向索引中写入文档或者读取文档,并通过ES内部使用Lucene将数据索引或从索引中检索数据

一个索引就是一个拥有几分相似特征的文档的集合(类似于我们在数据库中的库结构),一个索引由一个名字来标识,并且在我们要对对这个索引中的文档进行索引,搜索,更新和删除的时候,都要使用到这个名字。

文档(document)

文档是ES中主要的实体。对所有使用ES的案例来说,他们最终都可以终结为对文档的搜索。文档由字段构成。

映射(mapping)

所有文档写进索引之前都会先进行分析,如果将输入的文本分割为词条,哪些词条又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则

类型(type)

每个文档都有与之对应的类型定义。这允许用户在一个索引中存储多种文档类型,并为不同文档类型提供不同的映射

分片(shards)

shards代表索引分片,ES可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳上的雨天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值