elasticSearch

elasticSearch

1.基础概念
	全文搜索属于常见的需求,ElasticSearch是全文搜索引擎首选,它可以快速存储,搜索,分析海量数据,底层是lucene,提供REST API接口访问
	索引(相当于数据库)
	类型(相当于数据表)
	文档(相当于一条条的数据)JSON格式

2.倒排索引
	分词:将整句拆分为单词

Windows安装

安装网址: https://www.elastic.co/cn/downloads/past-releases#elasticsearch
下载解压后直接进入bin目录,双击运行elasticsearch.bat即可
默认访问路径:http://localhost:9200/
修改配置文件config下elasticsearch.yml为xpack.security.enabled的值设为false
配置自启动
$ elasticsearch-service.bat install
安装ik分词器
安装网址:https://github.com/medcl/elasticsearch-analysis-ik/releases
在elasticsearch下的plugins目录下创建ik文件夹解压,重启elasticsearch
安装kibana
修改kibana配置支持中文:i18n.locale: “zh-CN”
执行\bin\kibana.bat

Docker安装

1.下载镜像文件
	$ docker pull elasticsearch:7.4.2
	$ docker pull kibana:7.4.2  //可视化检索数据应用

2.创建实例
	
1.ElasticSearch
	mkdir -p /mydata/elasticsearch/config
	mkdir -p /mydata/elasticsearch/data
	echo "http.host:0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

	docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
	 -e "discovery.type=single-node" \
	 -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
	 -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
	 -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
	 -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
	 -d elasticsearch:7.4.2
	注意:-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \测试环境下设置的初始内存和最大内存,太大启动不了
	上述如果失败请检查权限:
		授读写执行权:在elasticsearch下
			$ chmod -R 777 /mydata/elasticsearch/
			$ docker start
2.Kibana
	
	docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.44.128:9200 -p 5601:5601 \ -d kibana:7.4.2

初步检索

1.GET请求
	ip+es端口+/_cat/nodes   查看所有节点
	ip+es端口+/_cat/health  查看es健康状况
	ip+es端口+/_cat/master  查看主节点
	ip+es端口+/_cat/indices 查看所有索引

2.索引一个文档(保存)
	保存数据,数据在哪个索引和类型下,指定唯一标识
	保存数据:
		PUT:ip+es端口+索引+类型+唯一标识+json参数
		POST:可以不带id,会自动生成,带id和PUT一样

3.查询文档
	查询数据:
		GET: ip+es端口+索引+类型+唯一标识

4.更新文档
	更新数据:
		POST:ip+es端口+索引+类型+唯一标识+_update+参数doc
		(带_update会检查原数据对比,不带就不需要参数doc,直接填修改值)
		PUT:一样

5.删除文档
	删除数据:
		DELETE:ip+es端口+索引+类型+唯一标识

6.bulk批量API
	POST ip+es端口+索引+类型+_bulk
		{"index":{"_id":"1"}}
		{"name":"john Doe"}
		{"index":{"_id":"2"}}
		{"name":"jane Doe"}

	注:index是保存操作,删除delete,更新update,创建create

	https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json
	测试数据地址

进阶检索

https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-search.html
官方文档
1.检索数据
	GET 类型+/_search?参数
				
	GET 类型+/_search
		{
			"query":{
						"match_all":{}
					},
			"sort":[{
						"排序字段":"asc"
					}]
		}
	(检索所有和排序)

2.Query DSL
	QueryDSL仅仅是一个通用的查询框架,专注于通过 JavaAPI 构建类型安全的 Sql 查询,也可以说 QueryDSL 是基于各种 ORM 框架以及 Sql 之上的一个通用的查询框架,QueryDSL 的查询,类是于 SQL 查询,很全面只不过一个是用 SQL 一个是用代码来代替 SQL 


3.match匹配查询
	精确匹配
		GET 类型+/_search
		{
			"query":{"match":{"字段":"值"}}

		}
	全文检索,可模糊查询,精确检索,结果按评分排序,会对检索条件进行分词匹配

4.match_phrase短语匹配
	将需要匹配的值当成一个整体单词检索,不进行分词
	GET 类型+/_search
		{
			"query":{"match_phrase":{"字段":"值"}}

		}
5.multi_match多字段匹配
	两个或者两个以上字段都匹配某个值的进行检索,会分词
	{
		"query":{"multi_match":{
					"query":"匹配的值",
					"fields":[多个字段],
								}
				}

	}

6.bool复合查询
	可以合并任何其他查询语句包括复合查询,复合语句之间可以相互嵌套,表达很复杂的逻辑

	must:必须满足-字段+值-条件
	must_not:必须不满足-字段+值-条件
	should:应该满足-字段+值-条件,不满足也没关系(影响评分)

7.filter结果过滤
	并不是所有查询都需有分数,特别是过滤的文档,为了不计算分数es会自动检查场景并优化查询执行
	
8.term	
	和match一样,匹配某属性的值,全文检索字段用match,其他非text字段匹配用term

9.aggregations(执行聚合)
	聚合提供数据中分组和提取能力,最简单聚合方法大致等于sql group by和sql聚合函数,在es中,执行搜索返回结果并同时返回聚合结果,把响应中结果分开的能力,是非常强大有效的,可以执行查询和多个聚合,并且在一次使用中得到各自任何一个返回结果,使用一次简洁和简化API避免网络往返
	aggs:聚合关键字
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值