ElasticSearch
一:ElasticSearch安装
2:熟悉目录!
bin 启动文件
config 配置文件
log4j2.properties 日志配置文件
jvm.options 虚拟机相关的配置
elasticsearch.yml elasticsearch的配置文件 默认9200端口
lib 相关jar包
logs 日志!
modules 功能模块
plugins 插件 。安装插件可以直接放在这个目录下
3:启动
4.安装可视化界面 head插件
-
cnpm install 进行安装
-
npm run start 进行启动
- 配置跨域支持
-
kibana的安装
kibana需要和es的版本一致,解压既安装。
- 配置设置为中文
二:es的理解
1:es当作一个数据库(可以建立索引(数据库),文档(库中的数据))
三:IK分词器
安装
1.可以去GitHub中下载。
2.下载完成后,直接放在plugins文件夹下面就可以使用。
3.安装好后重启es。
4.使用
ik_smart 最简分词器
ik_max_word 最细力度划分
5.自己进行分词器词典进行配置
- 基础测试
-
- 创建一个索引!
PUT /索引名/~类型名~/文档ID {请求体}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBg89oNn-1625819125455)(C:\Users\18237\AppData\Roaming\Typora\typora-user-images\image-
-
创建完成后自动增加索引
- 数据类型有那些?
-
创建索引的一个规则(相当于数据库中创建一个表但是里面没有数据,只是指定了字段名和对应的类型)
PUT /test2 { "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "long" }, "birthday": { "type": "date" } } } }
-
获取这个规则,可以通过GET请求获取具体的信息
- 如果自己的文档字段类型没有指定,es会给我们默认配置
扩展:
通过命令 查看elasticsearch 索引情况
通过get _cat/ 可以获取es当前情况下的具体信息。
- 修改
1.修改 提交还是使用PUT即可,然后覆盖。
- 使用POST指令进行修改更新
- 删除
关于文档的基本操作(重点)
基本操作
1:创建索引
2:简单的查询
// 查询ID为1的数据
GET kuangshen/user/1
// 带条件的查询数据
GET kuangshen/user/_search?q=name: 狂神说
3:复杂的查询(排序,分页,高亮,模糊查询,精准查询)
- 模糊查询
-
不想查询一个表中的所有列,可以指定列名进行查询
使用 "_source"指令
-
将查询出来的结果进行一个指定的列进行升序或者降序排序
使用 "sort" 指令进行排序
- 分页查询
使用 "form" 和 "size" 进行分页查询(和MYSQL中的limit的一样的用法),下表从0开始
-
使用bool 可以进行一个多条件查询数据
// 使用 "bool" 进行查询 // must (and) 表示所有的条件都必须满足 // should (or) 表示所有的条件只要满足一个就可以了 // must_not (not) 表示和其中的条件不一致的值 GET kuangshen/user/_search { "query": { "bool": { "must": [ // should 可以替换 { "match": { "name": "狂神说" } }, { "match": { "age": 2 } } ] } } }
- 过滤器
//使用 "filter" 指令
// gt 大于
// gte 大于等于
// lt 小于
// lte 小于等于
GET kuangshen/user/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "狂神说"
}
}
],
"filter": {
"range": {
"age": {
"gt": 10,
"lt": 20
}
}
}
}
}
}
- 数组查询
// 需要查询数组中的多个匹配的值 可以使用空格 分割开 ,只要有匹配的就可以进行查询出来
GET kuangshen/user/_search
{
"query": {
"match": {
"tags": "男 技术"
}
}
}
精确查询
term 查询是直接通过倒排索引指定的词条进程精确查找的!
关于分词:
term : 直接精确查询。
match: 会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询)
注意:
两个类型的区别:
text
keyword
keyword
- standard
- 高亮查询
GET kuangshen/user/_search
{
"query": {
"match": {
"name": "狂神说"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
// 自定义标签修改样式
GET kuangshen/user/_search
{
"query": {
"match": {
"name": "狂神说"
}
},
"highlight": {
"pre_tags": "<p class='key' style='color:red'>",
"post_tags": "</p>",
"fields": {
"name": {}
}
}
}
自定义标签修改样式