声明 JDK1.8,最低要求!ElasticSearch客户端,界面工具,ik分词器版本必须一致!
Java开发,ElasticSearch 的版本和我们之后对应的JAVA的核心Jar包,版本对应!JDK环境是正常!
下载:https://www.elastic.co/cn/downloads/elasticsearch
华为镜像下载地址:
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
bin 启动文件
config 配置文件
log4j2 日志配置文件
jvm.options java 虚拟机相关的配置
elasticsearch.yml elasticsearch 的配置文件! 默认端口:9200! 跨域!
lib 相关jar
logs 日志!
modules 功能模块
plgins 插件 ik 分词器
下载使用华为镜像下载
选择windows 10版本 下载
下载完成,直接解压启动
选择bat 脚本启动
访问 默认端口 http://localhost:9200
了解 ELK
ELK 是 ElasticSearch 、Logstash、kibana 三大开源框架首字母大写简称,市面上也被称为Elastic Stack 。其中 ElasticSearch是一个基于Lucene,分布式,通过 Restful 方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用 ElasticSearch 作为底层支持框架,可见ElasticSearch 提供 的搜索能力确实强大,失眠上很多时候我们简称ElasticSearch为es。 Logstash 是ELK 的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticearch/kafka等)。Kibana可以将 elasticsearch 的数据通过友好的页面展示出来,提供实时分析的功能。
市面上很多开发只要提到ELK 能够一致说出它是一个日志分析架构技术栈总称,但实际ElK不仅仅适用于日志分析,它还可以支持其他任何数据分析和收集的场景,日志分析和手机只是更具有代表性。并非唯一性。
下载: https://github.com/mobz/elasticsearch-head
解压
运行,执行npm install 更新 (需要安装 node.js)
执行 npm run start
出现head 请求跨域以下情况,修改 elasticsearch.yml 配置文件
http.cors.enabled: true
http.cors.allow-origin: "*"
因为es默认不支持跨域,我们修改让他支持以下就好了
什么是Ik 分词器?
分词:即把一段中文或者别的划分为一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如 我爱JAVA 会被分为 “我”,“爱”,“JAVA”,这显然是不符合要求的,所以我们需要安装中文分词器IK来解决问题
如果要使用中文,建议使用 ik 分词器。
IK 提供了两个分词算法: IK_smart 和 IK_max_word ,其中 ik_smart 为最少切分,ik_max_word 为最细粒度划分!
安装
1,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
2,下载完成后,放到 elasticsearch /plugins 该目录下
3,重启 es
安装 kibana
kibana是一个针对 Elastaicsearch 的开源分析及可视化平台,用来搜索,查看交互存储 在Elasticsearch 索引中的数据。使用Kibana,
可以通过各种图标进行高级数据分析及展示。kibana 让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板实时显示 Elasticsearch 查询动态。设置Kibana 非常简单,无需编码或者额外的基础架构,几分钟内疚可以完成 kibana安装并启动Elasticsearch 索引监测。
下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana
下载解压 启动 就可以了
提示:需要安装node.js 才能启动
汉化
找到该路径汉化文件:D:\java\ElasticSearch\kibana-7.9.3-windows-x86_64\x-pack\plugins\translations\translations
1,配置config:D:\java\ElasticSearch\kibana-7.9.3-windows-x86_64\config
2,打开:kibana.yml
启动
测试
使用 ik_smart 和 ik_max_word 测试
自定义 扩展字典;该路径下D:\java\ElasticSearch\elasticsearch-7.9.3\plugins\elasticsearch-analysis-ik-7.9.3\config
以后的话,我们需要自己配置 分词就在自己定义的 dic文件中进行配置即可~
一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
基本Rest命令说明:
method | url地址 | 描述 |
---|---|---|
PUT | localhost:9200/索引名称/类型名称/文档id | 创建文档(指定文档id) |
POST | localhost:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | localhost:9200/索引名称/类型名称/文档id/_update | 修改文档 |
DELETE | localhost:9200/索引名称/类型名称/文档id | 删除文档 |
GET | localhost:9200/索引名称/类型名称/文档id | 查询文档通过文档id |
POST | localhost:9200/索引名称/类型名称/_search | 查询所有数据 |
PUT /索引名/类型名称/文档id
{请求体}
创建成功
那么name 这个字段 用不用指定类型呢。 关系型数据库是需要指定类型的
PUT /test2
{
"mappings": {
"properties": {
"name":{
"type":"text"
},
"age":{
"type":"long"
}
}
}
}
}
GET test2 获得索引信息
观察 test1 索引 没有 指定类型, es有默认类型
GET test1
修改提交还是使用 PUT即可。然后覆盖
POST /test1/type1/1/_update
{
"doc":{
"name": "李四"
}
}
修改成功
DELETE test2
索引test2 已经不存在
查询根据 姓名 条件,年龄排序, 分页
GET test1/type1/_search
{
#查询匹配 名字为张三的
"query":{
"match":{
"name":"张三"
}
},
#根据年龄排序
"sort":[{
"age":{
"order":"asc"
}
}],
#分页 从0条开始 返回10条数据
"from":0,
"size":10
}
多条件精确查询,根据
bool
关键字 进行多条件关键字查询
GET test1/type1/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"java"
}
},
{
"match":{
"age":"3"
}
}
]
}
}
}
must : 相当于 sql
里面的 and
should :相当于 sql
里面的 or
must_not : 相当于 sql
里面的 not
查询条件过滤,过滤年龄大于5岁的
GET test1/type1/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"java"
}
}
],
"filter":{
"range":{
"age":{
"gt":5
}
}
}
}
}
}
查询条件过滤,过滤年龄小于5岁的
GET test1/type1/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"java"
}
}
],
"filter":{
"range":{
"age":{
"lt":5
}
}
}
}
}
}
多个条件过滤
GET test1/type1/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"java"
}
}
],
"filter":{
"range":{
"age":{
"gte":25
"lte30
}
}
}
}
}
}
匹配多个条件
GET test1/type1/_search
{
"query":{
"match":{
"name":"java 男“
}
}
}
精确查询
term 查询是直接通过 倒排索引指定的词条进程精确查找
关于分词:
高亮查询
GET test1/type1/ _search
{
"query":{
"match":{
"name":“java”
}
},
"highlight":{
#自定义高亮颜色
"pre_tags":""
,
"post_tags":"",
"fields":{
“name":{}
}
}
}