由于现在所在公司的业务范围越来越大,之前的单纯的使用SQL对商品进行搜索已经不能满足要求,目前主流的开源搜索引擎就是ES和Solr,两者都是基于Lucene的二次高阶开发而来。ES相对与solr最显著的优势应该是分布式的部署,另外Solr在建立实时索引时, 会产生io阻塞,性能查询较差,而ES就没有这个问题,我还有看到有人做过统计,随着数据量的增加solr的搜索效率也会随之降低,而ES却没有明显的变化。考虑到业务场景是电商的商品搜索,其中对于商品的库存相对来说实时性还是很重要的,我开始对ES的学习。
一些概念
Node
比较好理解,就是一个ES的运行实例。单个物理和虚拟服务器根据其物理资源的能力容纳多个节点。Node可以有名字,默认是一个UUID。
Cluster
前面我也提到过了,ES的一大特点是分布式,而Cluster就是ES集群由一个或多个ES节点实例连接在一起的一组。弹性搜索集群的力量在于任务的分布,搜索和索引,跨越集群中的所有节点。
ES集群中的节点可以分配不同的任务或职责:
主节点——负责整个集群的管理和配置操作,例如添加和删除节点。
客户机节点——将集群请求转发给主节点,将数据相关请求转发给数据节点。
数据节点——存储数据并执行与数据相关的操作,如搜索和聚合。
摄取节点——用于在索引前对文档进行预处理。
默认情况下,每个节点都会自动分配一个惟一的标识符或名称,用于管理目的,并且在多节点或集群环境中变得更加重要。
cluster也是有名字的,默认是”elasticsearch”。
Index
是不同类型的文档和文档属性的集合。Index还使用了shards的概念来提高性能。例如,最近订单index、商品分类index、活动index等等,index 使用一个全小写的name作为标识。
Type
一个Index内可以定义一个或多个Type,它是一个文档集合,共享同一索引中出现的一组公共字段。例如,一个索引包含一个社交网络应用程序的数据,然后可以有一个特定类型的用户概要数据、另一个类型的消息传递数据和另一个类型的评论数据。
Document
它是以JSON格式描述的特定方式定义的字段集合,可被索引的基本信息单元。一个document必须属于index中的某个type。每个文档都与一个名为UID的唯一标识符关联。
安装
由于Lucene是依赖JAVA的,所以首先我们需要安装JDK,这个网上有一大推,随意百度了安装即可。
然后就是ES了,windows用户可以去ES官网进行下载。
windows记得要设置JAVA的PATH。
CentOS的用户可以通过yum直接安装
yum install elasticsearch -y
安装完毕后可以在命令行中输入elasticsearch以启动它。
假如正常启动,ES会使用默认的9200端口,你也可以打开bin目录中的elasticsearch.yml的http.port来修改它。使用浏览器打开http://localhost:9200,可以看到ES返回的JSON信息。
{ "name" : "OrderRe", "cluster_name" : "elasticsearch", "cluster_uuid" : "fiir950XhQ6e54z7HB65agB", "version" : { "number" : "6.4.0", "build_hash" : "19c13d0", "build_date" : "2018-08-30T21:44:24.823Z", "build_snapshot" : false, "lucene_version" : "7.2.1" }, "tagline" : "You Know, for Search" }
ES的接口是兼容RESTful风格的,所以如果你了解REST API将会让使用它的接口更加得心应手。
这篇文章就先介绍到这里,下次我们将开始对前面介绍的几个概念的接口操作进行更加详细的介绍。
版权所属,如需转载,请注明出处:搜闲鱼
“Elasticsearch基本概念与安装”的一个回复