elasticSearch
1.下载elasticSearch,双击elasticSearch.bat启动,访问localhost:9200得到如下信息:
{
“name” : “DESKTOP-NISBGPH”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “XnQoQ8EVScu0FdTqc0fstw”,
“version” : {
“number” : “7.6.1”,
“build_flavor” : “default”,
“build_type” : “zip”,
“build_hash” : “aa751e09be0a5072e8570670309b1f12348f023b”,
“build_date” : “2020-02-29T00:15:25.529771Z”,
“build_snapshot” : false,
“lucene_version” : “8.4.0”,
“minimum_wire_compatibility_version” : “6.8.0”,
“minimum_index_compatibility_version” : “6.0.0-beta1”
},
“tagline” : “You Know, for Search”
}
2.安装es head可视化插件
下载文件
启动:npm install下载依赖 ,npm run start启动
连接测试发现,存在跨域问题,配置es:
http.cors.enabled: true
http.cors.allow-origin: “*”
重启es服务,然后再次连接,访问localhost:9100看到一个可视化界面
这个head我们把它当做一个数据展示工具,后面的查询,kibana
了解ELK
elk是elasticSearch,logstash,kibana三大开源框架首字母大写的简称,市面上也成为Elastic Stack,其中elasticSearch基于lucene、分布式、通过restful方式进行交互的近实时搜索平台框架,像类似于百度谷歌这种大数据全文搜索引擎的场景都可以使用es作为底层支持框架,logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集不同格式的数据,经过过滤后支持输出到不同的目的地(redis/MQ/文件/es/kafka),Kibana可以将es的数据通过友好的页面展示出来,提供实时分析的功能。
市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈的总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其他任何数据分析和收集的场景,日志分析和收集 更具有代表性,并非唯一性。
下载kibana文件,解压后修改kibana.yml配置文件的语言为中文ZH-CN,然后启动批处理命令,访问localhost:5601
物理设计:
es在后台把每个索引分成多个分片,每分分片可以在集群中的不同服务器间迁移,一个人就是一个集群,默认的集群名字就elasticsearch
逻辑设计:
一个索引类型中,包括多个文档,比如说文档一,文档二,当我们索引一篇文档时,可以通过这样一个顺序找到:索引->类型->文档ID,通过这个组合我们就能索引到某个具体的文档,注意:ID是一个字符串
倒排索引:
elasticsearch和lucene索引的区别:
在elasticsearch中,索引(库)这个词被使用的广泛,在es中,索引被分成很多分片,每个分片就是一个lucene的索引,所以一个es索引是由多个lucene索引组成的。
es核心概念:
1.索引
2.字段类型(mapping)
3.文档(documents)
IK分词器:
提供了ik_smart最少切分和ik_max_word最细粒度切分两种分词算法
下载重启
配置自定义分词:
然后重启es,重启kibana
基础测试:
自动添加索引:PUT /索引名/类型名/文档id
{请求体(json格式)}
创建索引及规则,可以通过GET请求获得创建的信息GET test2
如果文档的字段没有指定,那么es就会给我们默认配置字段类型
基本rest命令:
关于文档的操作:
修改数据:
PUT命令修改,如果不传递值就会被覆盖,推荐使用POST的修改,灵活性更高:
POST 索引名/类型名/文档id/_update
{
“doc”:{
“键”:“值“
}
}
查询数据:
GET 索引名/类型名/_search
{
“query”:{
“bool”: { //多条件匹配
“must”: [ //must且,should或;还有must_not过滤此条件的结果
{
“match”: {
“name”: “法外狂徒”
}
},
{
“match”: {
“age”: “20”
}
}
]
},
“match”:{
“键”:“值”
}
},
“_source”:[“name”,“desc”], //查询的字段(结果的过滤)
“sort”: [ //排序 age排序的字段, desc降序
{
“age”: {
“order”: “desc”
}
}
],
“from”: 0, //分页,开始索引
“size”: 1 //查询条数
}
过滤:
高亮查询:
ElasticSearch集成SpringBoot:
引入依赖:
org.elasticsearch.client
elasticsearch-rest-high-level-client
${elasticsearch.version}
commons-logging
commons-logging
org.springframework.boot
spring-boot-starter-data-elasticsearch
es配置文件:
测试案例:
获取并插入多条数据
查询数据