Elasticsearch
一、1. Elasticsearch是什么?
如果需要完成数量级较大搜索服务,传统数据库搜索会显得力不从心,性能和速度达不到真实业务需求,一般我们都会使用全文检索技术来进行替代。
常见的全文检索技术有:Solr、Elasticsearch等。
今天,我们要讲的是其中之一:Elasticsearch
2.概述
Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。
Logstash 是动态数据收集管道,拥有可扩展的插件生态系统。也就是数据的收集,处理和储存。
Elasticsearch 是一个基于 JSON 的分布式搜索和分析引擎。也就是数据的检索和分析。
Kibana 可视化 Elastic Stack 的窗户(工具)。探索数据并管理堆栈。也就是数据的可视化
2.1下载
最新版本下载: https://www.elastic.co/cn/start.
历史版本下载1: https://www.elastic.co/cn/downloads/past-releases.
历史版本下载2: https://www.elastic.co/cn/downloads/past-releases#elasticsearch.
3 ,安装
解压即可
二、使用步骤
1.启动
确定启动文件,bin目录下elasticsearch.bat命令,是用于启动elasticsearch的
步骤1:启动,双击启动程序
启动成功后,绑定的端口
9300:集群节点间通讯接口
9200:客户端访问接口
步骤2:访问,http://localhost:9200/
1.2 如无法启动
黑窗口闪烁后关闭
修改config\ elasticsearch.yml文件,添加如下内容
xpack.ml.enabled: false
1.3 ElasticSearch常见配置
Elasticsearch基于Lucene的,而Lucene底层是java实现,学习过程中,建议将jvm参数修改小一些。
修改 config/jvm.options,
2.1 Kibana下载
下载历史版本: https://www.elastic.co/cn/downloads/past-releases#kibana.
2.2 Kibana安装
解压zip即可
2.3 启动
双击 /bin/kibana.bat 进行启动
2.4访问
http://localhost:5601
2.5 基本使用
2.6 中文分词器
分词与分词器
分词 Analysis:对文本进行分析,将全文本转换一系列单词的过程。
分词器Analyzer :分词Analysis通过分词器Analyzer实现的。
默认es不会对中文进行分词
安装IK分词器(支持中文分词)
IK分词器提供了源代码(maven项目),通过打包生产zip文件
https://github.com/medcl/elasticsearch-analysis-ik/releases
使用Kibana进行测试
POST _analyze
{
"analyzer": "ik_max_word",
"text": ["我是中国人"]
}
3.1 head服务(可选)
步骤1:安装和启动head服务
4.1 跨域问题:elasticsearch支持跨域
在elasticsearch的config目录下,修改elasticsearch.yml文件,添加跨域内容
#Cross domain
http.cors.enabled: true
http.cors.allow-origin: "*"
5.简单测试
添加或更新数据
语法:数据存在更新;如果不存在添加(指定id)
PUT _index/_type/_id
{
"属性": "值",
....
}
删除数据
语法:
DELETE _index/_type/_id
指定id查询
GET czxy/book/b001
指定id查询,检索指定内容
GET czxy/book/b001?_source=title,price
条件查询:复合查询(多条件查询)
bool:多条件拼接
must:必须
must_not:不含
should:可有可无
注意:must和should同时存在的时候,should将会变得不起作用
精确匹配
term 进行精确匹配(数据要求:数字、日期、布尔、not_analyzed的字符串(未分词))
范围查询
range 用于确定范围,gt 大于、lt 小于、gte大于等于、lte小于等于
总结
希望各位提出问题