1. 常见的搜索引擎介绍
1. Lucene
特点:搜索引擎库,功能强大,接入复杂
Lucene是一款高性能的、可扩展的信息检索工具库。除了高性能外,Lucene对搜索功能开发提供了强大支持,如短语查询、通配符查询、连接查询、分组查询等。但是由于Lucene只是一个库,再加上其自身的专业性和复杂性,开发者在接入Lucene前,必须要深入了解检索的相关知识。为了降低Lucene接入的复杂性,出现了两款针对Lucene的项目应用,即Solr和Elasticsearch。
2. Solr
特点:基于Lucene的搜索引擎服务器
Solr是基于Lucene开发的一个独立的企业级搜索应用服务器。它对外提供基于HTTP请求的Web接口。用户可以直接通过HTTP请求携带相关搜索参数并得到相应的返回结果。
3. Elasticsearch
特点:基于Lucene的搜索引擎服务器,分布式
Elasticsearch也是基于Lucene的搜索引擎应用服务器,采用简单的RESTful API来隐藏Lucene的复杂性。除此之外,Elasticsearch对分布式部署提供了很好的支持,用户不需要过度关注分布式设计的细节,即可实现分布式搜索引擎系统的搭建。因此本次大觅网开发选用Elasticsearch做为搜索引擎服务器来实现商品搜索功能。
gitHub、微博等都是基于es做的搜索。
2. Elasticsearch相关概念
- node
节点,部署Elasticsearch程序的服务器
即部署Elasticsearch程序的服务器。节点用来存储数据,并参与集群的索引和搜索功能。 - cluster
集群,多个节点组成的架构
集群中有多个节点,一般包含一个主节点和多个从节点。主节点可以通过选举产生。与传统集群不同,Elasticsearch集群虽有主、从之分,但是对于外部程序调用而言,访问Elasticsearch中的任何一个节点和访问整个集群是等价的。即对于外部调用而言,Elasticsearch是一个去中心化的集群。 - index
索引,相当于关系型数据库的database
index在Elasticsearch中相当于关系型数据库管理系统中的database。 - shard
索引分片,索引可以被设置为多个分片
Elasticsearch支持把一个完整的索引分成多个分片,分布到不同的节点上,构成分布式搜索。分片的数量可以在索引创建前指定,索引一旦创建,则不可以再修改分片的数量。 - replicas
索引副本
Elasticsearch可以对索引设置多个副本,副本一方面可以提高系统的容错性,当某个节点某个分片损坏或丢失时可以使用副本进行恢复。另外副本还可以提高Elasticsearch的查询效率,利用副本,Elasticsearch会自动对搜索请求进行负载均衡。 - type
类型,对应于关系型数据库的table
对index数据的逻辑划分,相当于关系型数据库的table。 - document
文档,类似于关系型数据库的row
在Elasticsearch中每一条数据是以JSON格式来进行保存的。每一个JSON数据称之为一个文档。在Elasticsearch中文档对应于关系型数据库表中的一条记录。
3. Elasticsearch客户端-Kibana
kibana 安装注意事项
需要配置es的地址。
编辑 kibana.yml(在config路径下)配置文件:
elasticsearch.url: "http://192.168.10.208:9200"
4. Elasticsearch请求方式
-
GET 数据查询
# 查询所有 GET _search { "query": { "match_all": { } } } #查看所有的索引 Get _cat/indices?v # ?v代表状态数据 #指定索引查询、指定类型查询 GET /索引名称/类型名称/_search # 请求体查询 # 请求体查询一般使用query子句进行实现 # 查询子句 #作用 #可用于精准查询和全文检索查询 #常用子句 #match子句 作用:匹配度查询 GET sc_01/user/_search { "query": { "match": { "name":