1. 先把环境都运行起来es、kibana、elasticSearch-head(在elasticsearch-head-master下运行 npm run start 启动 )
2. 在kibana中写代码(用的都是json),执行若超时,在kibana\config\kibana.yml文件中去掉#,将3000改为9000
3. 关于表的概念,此处称为type,正在逐渐弃用中,所以只讨论索引(就是数据库)以及文档(就是一条记录)
4. 本文的每组图中,以GET PUT POST等开头的是代码,其余是在kibana和elasticSearch-head中的执行结果
5.本文代码中的test2、test3、20200713都是索引名
6. 一些小命令:
集群健康值:
库的所有信息:
一、创建一个索引:
1. 创建索引同时插入一个文档,会自动匹配字段类型
- 在kibana中:PUT /索引名/~类型名~/文档id { 请求体 }
- 执行结果为
2. 创建索引时,只规定字段类型,不插入文档
二、查询索引:
三、删除索引:
一、新增文档:
通过修改id的方式
二、删除文档:
1. 按id删除:
三、修改文档(按照id):
1. 使用PUT覆盖:每一个属性都要写全,否则该属性变成空白,因为是删掉再重新写入,所以增加新的字段也可以
2. 用POST(推荐):修改哪个属性写哪个就行,其他不会改变,因为是在原文档上修改,不能新增字段
四、查询文档
1. 通过id查询某条文档:
2. 通过关键字查询:(下文五、1也是通过关键字查询的)
会查询出所有该字段包含关键字的文档,并且只要包含关键字中的 某个字都可以。查询出来的score代表匹配度,正相关。
五、复杂操作搜索:
当前数据如下:
1. 普通的字段匹配查询:
同字段多个值相或,用空格隔开就好
2. 只查询出其中的几个字段:
3. 将查询出的信息排序:
4. 分页查询:from从第几条数据开始,size返回多少条数据
5. 多条件匹配 (不同字段多条件)
- must命令:所有的条件都要符合&&
- should命令:只要满足其中一个条件就可以 | |
- must_not命令:不满足条件1 && 不满足条件2的
- filter命令:过滤范围(如:年龄大于等于11,小于等于20)gt大于,lt小于,gte大于等于,lte小于等于(只写一个是单区间)
6. term针对keyword精确查询:(其实这部分match和term互换,也没有看出差别,term也可以替换match和should等合作,后面弄明白再来修改)
- 先建立一个新的索引,并且规定字段类型,插入一个文档
- 可见,当某个字段为keyword类型时,不会被分词器解析,而是被当做一个整体,text类型会被解析
- 再插入一条新数据,查询发现如果是按照text类型字段进行term查询,是模糊匹配的,而按照keyword类型查询精确匹配
(不知道为什么text类型进行term查询时,只能输入一个汉字才能查到多条数据?不过,term可以针对keyword可以精确查询)
7. 高亮查询:
将 "小明"高亮:
也可以修改高亮处的样式: