全文检索学习之ElasticSearch学习笔记

在非关系型数据库中,数据是非结构化的,如果直接去查找效率极低,全文检索将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。索引就是从非结构化数据中提取出的然后重新组织的信息。建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。在了解了全文检索的过程后,下面介绍最近学习的ElasticSearch全文检索引擎。

1、ElasticSearch简介

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,可以在java开发中使用,其核心还是Lucene,但是es在开发中使用
可以通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。另外es检索和存储速度极快,即搜即得到结构,修改便可近乎实时的保存。
Elaticsearch目前有被很多大型网站使用,如GitHub使用ElasticSearch
搜索20TB的数据,包括13亿文件和1300亿行代码,百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数
据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。新浪、阿里等许多大厂也在采用Elaticsearch全文搜索引擎

2、ElasticSearch术语

ElasticSearch术语包含index索引、Types类型、Documents、Fields,其中index可以理解为是关系型数据库里面的database,types可以对应为关系型数据库里面的表tables,documents可以以对应为关系型数据库里面的记录,fields以以对应为关系型数据库里面的字段。

2.1、index索引

一个index索引就是一个拥有几分相似特征的文档的集合。一个索引由一个全是小写字母组成的名字来标识,使用到这个名字对对应于这个索引中的文档进行索引、搜索、更新和删除。在一个集群中,可以定义任意多的索引。

2.2、type类型

在一个索引中,可以定义一种或多种类型。一个类型是索引的一个逻辑上的分类/分区,其语义完全支持自定义。通常,会为具有一组共同字段的文档定义一个类型。

2.3、document文档

文档是可被索引的基础信息单元。文档采用JSON格式。在index/type里面,可以存储任意多的文档。文档在物理上存在于索引之中,但文档必须被索引/赋予一个索引的type。

2.4、field字段

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

2.5、 mapping映射

mapping对处理数据的方式和规则做限制,某个字段的数据类型、默认值、分析器、是否被索引等等都可以被映射设置,另外处理es里面数据的一些使用规则设置也叫做映射,如按着最优规则处理数据以至于性能提高。

2.6、 cluster集群和node节点

集群就是由一个或多个节点组织在一起,所有节点的数据共同组成了所有数据,并一起提供索引和搜索功能。每个集群都有唯一标识的名字,默认就是“elasticsearch”。节点想组成或加入集群需要共同加入同一个名字的集群。
节点是集群中的一个服务器,是集群的一部分,可以存储数据并且参与集群的索引和搜索。每个节点也都有唯一标识的名字。

3、ElasticSearch使用

使用DSL语言来定义查,使用全文检索

(1)查询所有索引
GET /_cat/indices?v
(2)删除某个索引

DELETE /索引名

在这里插入代码片
(3)新增索引
PUT /索引名
(4)创建映射
PUT /索引名/type名/_mapping {
	"properties": {
		"name":{
			"type": "text",
			"analyzer": "所用的分词器",
			"search_analyzer": "所用的分词器"
		}
	}
}
(5)新增文档数据/修改数据
PUT /索引名/type名/id号 {
	 "name":"赵二", 
	 "age":22, 
	 "city":"上海", 
	 "description":"xxxxx" 
	 }
(6)更新数据
POST /索引名/type名/id号/_update {
	 "doc":{
	 	 "name":"xxx", 
	 	 "description":"xxxxxx" 
	 } 
}
(7)删除Document
DELETE /索引名/type名/id号
(8)查询所有数据
GET /索引名/_search

上面是一些常用的DSL语句,可以在 Kibana或者elasticsearch-head中使用进行全文检索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值