访问ElasticSearch的几种方式

17 篇文章 0 订阅
7 篇文章 1 订阅

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

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值