ElasticSearch学习笔记一

 

全文检索

全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立索引。指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索查字的过程。

  • 全文索引

  • 只处理文本
  • 不处理语义
  • 搜索时英文不区分大小写(因为索引库中建立的索引都是小写所组成的)
  • 结果列表有相关度排序

全文索引与数据库检索不同

  1. 全文检索好处
    1. 效率比数据库模糊查询效率高:因为数据库模糊查询需要全表扫描
    2. 搜索结果存在相关度的排序
    3. 搜索时关键词不区分大小写(而数据库中是区分大小写的)

什么是ElasticSearch?

是基于Apache Lucene构建的开源搜索引擎,是当前流行的企业级搜索引擎(分布式搜索引擎)。Lucence本身就可以被认为迄今为止性能最好的一款开源搜索引擎工具包,但是Lucence的API相对复杂,需要深厚的搜索理论。很难集成到实际的应用中去。同时ES是采用java语言编写,提供了简单易用的RestFul API,开发者可以使用其简单的RestFul API,开发相关的搜索功能,从而避免lucene的复杂性。

ES的应用场景json格式数据restful

Es主要以轻量级JSON作为数据存储格式,这点与MongoDB优点类似,但它在读写性能上优于MongoDB.同时也支持地理位置查询,还方便地理位置和文本混合查询。以及在统计、日志类数据存储和分析、可视化这方面是引领者。

国外:维基百科使用ES提供全文搜索并高亮关键字,Stackoverflow(IT问答网站)结合全文搜索与离地位置查询,github使用ES检索1300亿行得代码。

国内:百度(站外搜索,在云分析、网盟、预测、文库、钱包、风控等业务上都应用了ES,单集群每天导入30TB+数据,总共每天60TB+),新浪、阿里巴巴、腾讯等公司均有对ES的使用。

使用比较广泛的平台ELK(ElasticSearch全文检索服务器、Logstash, Kibana)

ES原理以及基本概念

./elasticsearch -d

表示让elasticsearch以后台的方式启动

 索引类型映射操作

1. 索引操纵

  • 创建索引   PUT/索引名  注意:索引名必须全部由小写字母组成
  • 查看所有索引    GET /_cat/indices?v
  • 查看单个索引 GET /索引名
  • 删除索引    DELETE /索引名
  • 删除所有索引  DELETE /*

2. 创建索引(index)和类型(type)和映射(mapping) 注意:在6.x版本之后一个索引只能创建一个类型

type的类型: text(文本比较多的情况) keyword(类似于String, 字符个数少的情况下) date, integer, long,double, boolean or ip

PUT /emp
{
	"mappings":{
		"order":{
			"properties":{
				"id":{"type": "keyword"},
				"name":{"ype":"keyword"},
				"price":{"type": "double"},
				"count":{"type":"integer"}
			}
		}
	}
}

以上创建类型的方式要求索引不能存在

3. 往创建好的索引中放置数据

添加手动指定_id

{_id:"1"}
PUT /dangdang/order/1  //这里添加的1是为_id所添加的值
{
	"id":"21",//这个是自定义里面的id的值
	"name":"cuihua",
	"price":23.23,
	"count":15
}

添加自动生成_id

{_id:"1"}
POST /dangdang/order  //这里添加的1是为_id所添加的值
{
	"id":"21",//这个是自定义里面的id的值
	"name":"cuihua",
	"price":23.23,
	"count":15
}

在实际的应用过程中,会经常让_id去代替我们自定义的id,自己不去创建

4. 查看数据:注意后面的id是_id,而不是我们自定义的id

GET /dangdang/order/1

查看类型  语法: GET /索引名/_mapping/类型名 在6之后的版本中 因为一个索引只能创建一个类型 所以可以直接GET /索引名/_mapping

GET /dangdang/_mapping/product

 

©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页