参考1 参考2
搜索引擎:官方文档 es可视化
ELK

1、docker安装elasticsearch

docker安装参考

启动

  1. docker run --name elasticsearch -p 8434:9200 -p 8435:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d elasticsearch:7.11.1

启动页面 http://8.142.76.223:8434/
image.png

内存不足 导致启动失败

[root@~]# dd if=/dev/zero of=swapfile bs=1024 count=500000
[root@~]# mkswap swapfile
[root@~]# swapon swapfile 报错改为0600权限 不用管
可以使用free命令查看swap空间大小是否发生变化;
命令#free -h
image.png

2、docker安装kibana

拉取镜像
docker pull kibana:7.11.1
启动镜像
docker run —name kibana —link=elasticsearch:elasticsearch -p 8432:5601 -d kibana:7.11.1

打开浏览器输入http://ip:8436就可以打开kibana的界面了。
image.png

3、命令

3.1、查看所有索引

http://localhost:9200/_cat/indices?v
或者 kibana查看
image.png

3.2、创建索引

代表我们需要创建一个名为 test 的索引,pretty 参数则是要求它返回一个漂亮的 json 结果
PUT /test?pretty
image.png

3.3、查看集群的状态

/_cat/health?v

  • Green: 即最佳状态
  • Yellow: 即数据和集群可用,但是集群的备份有的是坏的
  • Red: 即数据和集群都不可用

3.4、查看节点信息

/_cat/nodes?v

3.5、删除索引

DELETE /test?pretty(test 即索引的名称,pretty 参数则是要求它返回一个漂亮的 json 结果)

3.6、新增文档并建立索引

  1. //index指索引名、type指索引的类型、id是这条数据的id
  2. PUT /index/type/id
  3. {
  4. "json数据"
  5. }
  6. 咱们举个具体的例子
  7. PUT /test/user/19960911
  8. {
  9. "id": 19960911,
  10. "userId": "00001",
  11. "userName": "liziye"
  12. }

3.7、查询指定文档

GET /test/user/19960911 (查询我们刚刚添加的那个文档)
可以用postman 测试

3.8、修改某个文档(全部修改)

  1. //全部修改就是直接替换这个文档,必须带上所有的字段,才能对文档进行修改
  2. PUT /test/user/19960911
  3. {
  4. "id": 19960911,
  5. "userId": "00002",
  6. "userName": "liziye"
  7. }

3.9、修改某个文档(部分修改)

  1. POST /test/user/19960911/_update
  2. {
  3. "doc":{
  4. "userId":"00003"
  5. }
  6. }

3.10、查询全部文档

GET /test/user/_search

在返回的结果中包含了几个属性,我们这里对其简单解释一下:

  • took:耗费了几毫秒
  • timed_out:是否超时,这里是没有
  • _shards:数据拆成了5个分片
  • hits.total:查询结果的数量
  • hits.max_score:score的含义就是文档在本次搜索中的相关度分数,越相关,就越匹配,分数也就越高
  • hits.hits:匹配搜索的文档的详细数据

3.11、分页查询全部文档

  1. GET /test/user/_search
  2. {
  3. "query": { "match_all": {} },
  4. "from": 1,
  5. "size": 3
  6. }

3.12、删除文档

DELETE /test/user/19960911

4、postman测试

参考

查询操作

4.1、查看所有索引

GET:http://8.142.76.223:8434/_cat/indices?v
image.png

4.2、新增索引

PUT :http://8.142.76.223:8434/xxk?pretty
image.png

4.3、删除索引

DELETE /xxk?pretty(xxk 即索引的名称,pretty 参数则是要求它返回一个漂亮的 json 结果)

image.png

4.4、新增缩索引、文档

4.4.1、PUT方式保存数据

  1. PUT 8.142.76.223:8434/customer/extermal/1
  2. customer:索引 extermal:文档类型 1:id
  3. 请求体
  4. {
  5. "name":"张三"
  6. }

image.png
4.4.2、POST方式保存数据

  1. POST 8.142.76.223:8434/customer/extermal
  2. customer:索引 extermal:文档类型
  3. 请求体
  4. {
  5. "name":"张三"
  6. }

id是自动生成唯一id

4.5、查看所有文档

GET :8.142.76.223:8434/customer/extermal/_search
image.png

4.6、查询指定文档

GET :8.142.76.223:8434/customer/extermal/1
image.png

4.7、更新指定文档

4.7.1、post方式修改:带_update

  1. POST 8.142.76.223:8434/customer/extermal/1/_update
  2. 请求体
  3. {
  4. "doc":{
  5. "name":"李四"
  6. }
  7. }

image.png

4.7.2、post方式修改:不带_update

  1. POST 8.142.76.223:8434/customer/extermal/1
  2. 请求体
  3. {
  4. "name":"李四"
  5. }

4.8、删除索引、文档

  1. --ElasticSearch中未提供删除类型(表)的操作,只有删除索引或者文档
  2. DELETE customer/external/1
  3. DELETE customer

image.png

4.9、批量操作

/_bulk

5、java结合es操作

参考
复杂查询狂神
版本要保持一致

  1. <dependency>
  2. <groupId>org.elasticsearch.client</groupId>
  3. <artifactId>elasticsearch-rest-high-level-client</artifactId>
  4. <version>7.11.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.elasticsearch</groupId>
  8. <artifactId>elasticsearch</artifactId>
  9. <version>7.11.1</version>
  10. </dependency>