访问ElasticSearch的几种方式

SprinBoot 系列文章:
Spring Boot入门之Hello Spring Boot
SpringBoot 配置多个JdbcTemplate
SpringBoot 整合Mybatis
CAS统一登录认证(3): CAS 客户端接入实践
SpringBoot 整合Mail实现邮件发送
数据库连接池优化配置(druid,dbcp,c3p0)
SpringBoot+SpringSecurity+mysql实现认证与授权
SpringBoot+Spring Security基于内存用户认证
SpringBoot+WebSocket在线聊天室、消息推送
SpringBoot+SpringData JPA操作Mysql数据库
SpringBoot热部署值devtools配置
Spring Boot 资源文件属性配置
Spring Boot Server等内容的配置
Spring Boot + FreeMarker模板
SpringBoot+thymeleaf模板
SpringBoot +JDBC连接Mysql数据库
Zipkin分布式任务追踪
SpringBoot应用部署到外置Tomcat
Spring Boot + Swagger2 自动生成api接口文档

SpringBoot整合Shiro安全框架
SpringBoot+CAS Client 实现单点登录

SpringBoot 整合MyBatis-Plus
SpringBoot + validation 接口参数校验
Springboot+Redis 实现API接口防刷限流

ShardingSphere-ShardingJdbc 数据分片(分库、分表)
ShardingSphere-ShardingJdbc 读写分离
ShardingSphere-ShardingJdbc 数据脱敏

springboot+sms 集成腾讯云短信平台
SpringBoot+RabbitMQ 实现消息队列
快速从零搭建一个SpringBoot Web项目
从零快速搭建一个SpringBoot Web项目

SpringBoot+ElasticSearch 实现全文检索
访问ElasticSearch的几种方式
SpringBoot + Activiti 工作流引擎(一、基本概念与环境搭建)
SpringBoot + Activiti 工作流引擎(二、流程&任务操作)
SpringBoot 定时任务 实现方式

SpringBoot + EhCache实现本地缓存
SpringBoot + Redis 实现分布式缓存

访问ElasticSearch的几种方式:

  1. REST API
  2. 开源工具(Kibana、Head等)
  3. Spring Data Elasticsearch(应用程序使用接口访问或者开源框架)

一、RestAPI

1. 查看集群健康情况

GET /_cat/health?v
get:http://localhost:9200/_cat/health?v

在这里插入图片描述

2.查看有哪些索引

GET /_cat/indices?v
GET /_cat/indices 
get:http://localhost:9200/_cat/indices?v

在这里插入图片描述

3. ​​​​​​​创建索引

put:http://localhost:9200/blogindex

4.删除索引

delete: http://localhost:9200/blogindex

在这里插入图片描述

5.创建文档

post:http://localhost:9200/blogindex/blog
或者指定id(存在则类型为修改):http://localhost:9200/blogindex/blog/1
+内容:
{
    
    
    "title":"我的第一篇博客",
    "content":"博客正文123456"
}

在这里插入图片描述

6.修改文档

put:http://localhost:9200/blogindex/blog/1
+内容:
{
    
    
    "title":"我的第一篇博客",
    "content":"博客正文123456"
}

在这里插入图片描述

7.获取所有文档

get: http://localhost:9200/blogindex/_search
或者:http://localhost:9200/blogindex/blog/_search

在这里插入图片描述

8.按id查询文档

get: http://localhost:9200/blogindex/blog/1

在这里插入图片描述

9.基本条件查询文档

get: http://localhost:9200/blogindex/blog/_search?q=title:我的

在这里插入图片描述
在这里插入图片描述

10.模糊匹配查询

get:http://localhost:9200/blogindex/blog/_search?q=title:h*

在这里插入图片描述
在这里插入图片描述

11.删除文档

delete: http://localhost:9200/blogindex/blog/1

在这里插入图片描述

二、开源工具(Kibana、Head等)

1.查看所有索引

GET /_search 或者 GET _search  或者 GET /_search?timeout=01m

在这里插入图片描述
在这里插入图片描述

参数说明:

  • took:耗费了几毫秒
  • timed_out:是否超时,false是没有,默认无timeout
  • _shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,当然了,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。
  • hits.total:本次搜索,返回了几条结果
  • hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
  • hits.hits:包含了匹配搜索的document的详细数据,默认查询前10条数据,按_score降序排序

2.创建索引

PUT /kibana_blog_index

在这里插入图片描述

3.删除索引

DELETE /kibana_blog_index

在这里插入图片描述

4.创建文档

POST /kibana_blog_index/blog/1
{
    
    
    "tiitle": "springboot入门第一课",
    "content": "springboot入门第一课content",
    "star":1,
    "recommend": 1
}

在这里插入图片描述

5.按id查询文档

GET /kibana_blog_index/blog/1

在这里插入图片描述

6.修改文档

6.1 覆盖,替换文档(全量替换)

POST或者PUT

PUT /kibana_blog_index/blog/1
{
    
    
    "tiitle": "springboot入门第一课111",
    "content": "springboot入门第一课content111",
    "star":11,
    "recommend": 1
}

在这里插入图片描述

** 注意:**

  1. document是不可变的,如果要修改document的内容,可以通过全量替换,直接对document重新建立索引,替换里面所有的内容。
  2. es会将老的document标记为deleted(逻辑删除),然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除(物理删除)标记为deleted的document。
  3. 替换必须带上所有的field,否则其他数据会丢失。

6.2 修改部分内容

POST /kibana_blog_index/blog/1/_update
{
    
    
  "doc" : {
    
    
    "title": "springboot入门第一课1"
  }
} 

在这里插入图片描述

7.获取所有文档

GET /kibana_blog_index/blog/_search

# 或者 使用query DSL 请求:

GET /kibana_blog_index/blog/_search
{
    
    

  "query":{
    
    

     "match_all" : {
    
    }

  }

在这里插入图片描述

8.基本条件查询文档

8.1 基本查询

GET /kibana_blog_index/blog/_search?q=title:1*

8.2 使用query DSL 请求查询

8.2.1 使用query DSL 请求查询
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "match_all" : {
    
    }
  }
}

在这里插入图片描述

8.2.2 查询title包含第一的博客,同时按照star升序排列
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "match" : {
    
    
      "title" : "第一"
    }
  },
  "sort" : [
    {
    
     "star" : "asc"}
  ]
}

在这里插入图片描述

8.2.3 分页查询,同时按照star降序排列
GET /kibana_blog_index/blog/_search
{
    
    
  "from" : 1,
  "size" : 3,
  "sort" : [
    {
    
     "star" : "desc"}
  ]
}

在这里插入图片描述

8.2.4 指定查询项
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    "match_all" : {
    
    }},
  "_source" : ["title", "star"]
}

在这里插入图片描述

8.2.5 过滤查询,搜索title包含第一且star大于3的blog
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "bool" : {
    
    
      "filter" : {
    
    
        "range" : {
    
    
          "star": {
    
    "gt" : 3}
         }
       }
     }
   }
}

在这里插入图片描述

8.2.6 full-text search(全文检索)
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "match" : {
    
    
      "title": "springboot入门第五课5"
    }
  }
}

在这里插入图片描述

8.2.7 phrase search(短语搜索)
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "match_phrase" : {
    
    
      "title" : "第五课"
    }
  }
}

在这里插入图片描述

8.2.8 多条件查询
#title有"第五",star为5,recommond 不为0
GET /kibana_blog_index/blog/_search
{
    
    
  "query" : {
    
    
    "bool" : {
    
    
      "must" : [
        {
    
    
          "match_phrase" : {
    
    
            "title" : "第五"
          }
        }
        ],
        "should" : [
          {
    
    
            "match" : {
    
    
              "star" : 5
            }
          }
        ],
        "must_not" : [
            {
    
    
              "match" : {
    
    
                "recommond":0
              }
            }
        ],
        "minimum_should_match" : 1
    }
  }
}

在这里插入图片描述

两种请求分类:query string search / query DSL

  • 第一种:类似搜索全部商品: GET /ecommerce/product/_search (参数直接拼接在请求上,不带json参数的)query string search的由来,因为search参数都是以http请求的query string来附带的。
    搜索商品名称中包含yagao的商品,而且按照售价降序排列:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc 适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search。
  • 第二种:DSL:Domain Specified Language,特定领域的语言 http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大太多了。

full-text search (全文检索)和 phrase search(短语搜索)的区别:

  • 全文检索: 会将输入的搜索串拆解开来,去索引里面去一一匹配,只要能匹配任意一个拆解后的单词,就可以作为结果返回。

  • 短语搜索: 要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配成功,才能作为结果返回。

多条件查询中的字段描述:

  • must 表示一定要满足;
  • should 表示可以满足也可以不满足;
  • must_not 表示不能满足该条件;
  • minimum_should_match:1 表示最小匹配度,可以设置为百分之百,设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值,意思是当这个值等于X或者等于Y都成立,务必注意格式。

9.删除文档

DELETE /kibana_blog_index/blog/1

在这里插入图片描述

注意:在删除一个document之后,我们可以从侧面证明,它不是立即物理删除的,因为它的一些版本号信息还是保留的。

三、SpringBoot整合ElasticSearch

请参考:https://blog.csdn.net/u014553029/article/details/110506316

猜你喜欢

转载自blog.csdn.net/u014553029/article/details/110572632