1:ElasticSearch是什么?

  • Elasticsearch 是一个分布式的免费开源搜索和分析引擎
  • 适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据
  • Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名是Elastic Stack 的核心组件;
  • Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具

2:ElasticSearch的用处?

  • 分布式的搜索引擎和数据分析引擎 比如百度 京东 淘宝的搜索引擎都是它
  • 全文检索,结构化检索,数据分析
  • 可以对海量数据进行近实时的处理
  • 3:简单介绍一下ElasticSearch的REST风格:

3:ElasticSearch和ElasticSearch-head和Kibanan和ik分词器 都是es的常用插件下载地址:

ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D

ElasticSearch-head:https://github.com/mobz/elasticsearch-head

kibana:https://mirrors.huaweicloud.com/kibana/?C=N&O=D

IK分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases

4:开启简单的测试:

创建索引:

PUT jietest/type/1
{
"name":"小杰",
"age":"18"
}
成功提示:
{
"_index" : "jietest",
"_type" : "type",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}

介绍一下es的类型:

字符串类型:
text ,keyword
区别 text 数据类型不能用来排序和聚合。
但可以被用来检索过滤、排序和聚合。keyword 类型字段只能用本身来进行检索。
数值类型:
long,integer,short,byte,double,float ....等
布尔类型:
double
日期类型
date
.......等等

指定字段的类型(创建规则):

#这里给name age sex 分别定义了类型
PUT xiaojie
{
"mappings": {
"properties": {
"name":{
"type":"text"
},
"age":{
"type": "integer"
},
"sex":{
"type": "text"
}
}
}
}
#成功:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "xiaojie"
}

获取它的索引规则:

GET xiaojie
{
"xiaojie" : {
"aliases" : { },
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"name" : {
"type" : "text"
},
"sex" : {
"type" : "text"
}
}
},
"settings" : {
"index" : {
"creation_date" : "1620193321070",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "0C2DfwhiS06OTfLzH1Iwwg",
"version" : {
"created" : "7060199"
},
"provided_name" : "xiaojie"
}
}
}
}

添加索引数据:

PUT xiaojie/_doc/2
{
"name":"小陆",
"age":"5",
"sex":"男"
}

修改索引数据 POST:

POST xiaojie/_doc/1/_update
{
"doc":{
"name":"小杰杰",
"age":"19"
}
}

删除文档或者索引 DELECT:

DELETE xiaojie/_doc/1
//根据自己的要求删除文档还是索引数据

进阶:

文档的查询操作:

和mysql...其他数据库一样 查询那一块是最难的

来给大家简单介绍一下:

先PUT一些数据进去来模拟:

PUT xiaojie/_doc/1
{
"name":"小杰学java",
"age":"25",
"sex":"男"
}
PUT xiaojie/_doc/2
{
"name":"小云学java",
"age":"18",
"sex":"女"
} PUT xiaojie/_doc/3
{
"name":"小陆学java",
"age":"15",
"sex":"男"
}

简单查询:

//获取_id为1的索引数据
GET /xiaojie/_doc/1
//查询age等于15的索引
GET /xiaojie/_doc/_search?q=age:15

进阶:排序,分页,关键字高亮,模糊查询和精准查询

模糊查询:

//模糊查询
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"杰"
}
}
}
//也可以过滤数据只需要name和age 只需要在_source中保留字段即可
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"小杰"
}
},
"_source":["age","name"]
}

排序:

//利用sort然后把需要排序的规则规定一下
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"小杰"
}
},
"sort":[{
"age":"asc"
}]
}

分页:

//我这里是从0到1 需要分页加from起点和size终点即可
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"小杰"
}
},
"sort":[{
"age":"asc"
}],
"from":0,
"size":1
}

布尔值条件查询:

AND:

//must和sql里面的and一样 既满足名字有java 和age等于15
GET xiaojie/_doc/_search
{
"query": {
"bool": {
"must": [
{"match": {
"name": "java"
}},
{"match": {
"age": 15
}}
]
}
}
}

OR

//should和sql的OR(或)是一样的作用 这里是满足名字有java或者age等于15
GET xiaojie/_doc/_search
{
"query": {
"bool": {
"should": [
{"match": {
"name": "java"
}},
{"match": {
"age": 15
}}
]
}
}
}

NOT 不等于:

// must_not和sql里面的not一样 下面是查找age不等于18的索引数据
GET xiaojie/_doc/_search
{
"query": {
"bool": {
"must_not": [
{"match": {
"age":18
}}]}}
}

过滤查询:

//查看name有java且 age小于20的索引
GET xiaojie/_doc/_search
{
"query": {
"bool": {
"must": [
{"match": {
"name": "java"
}}
],
"filter": [
{"range": {
"age": {
"lt": 20
}
}}
]
}
}}
//查看name有java且 0<age<20的索引
GET xiaojie/_doc/_search
{
"query": {
"bool": {
"must": [
{"match": {
"name": "java"
}}
],
"filter": [
{"range": {
"age": {
"lt": 16,
"gt":0
}
}}
]
}
}}

多条件查询:

//查看name有杰 学的索引 用空格隔开即可多条件查询
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"杰 学"
}
}
}

高亮查询:

//默认的高亮 默认是用em标签
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"杰"
} },
"highlight":{
"fields": {
"name": {}
}}
}
//查询结果:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808291,
"hits" : [
{
"_index" : "xiaojie",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.9808291,
"_source" : {
"name" : "小杰学java",
"age" : "25",
"sex" : "男"
},
"highlight" : {
"name" : [
"小<em>杰</em>学java"]}
}]}
}

可以自定义高亮:

//利用pre_tags和post_tags来设置自定义标签
GET /xiaojie/_doc/_search
{
"query":{
"match":{
"name":"杰"
} },
"highlight":{
"pre_tags": "<span class='key' style='color:red'>",
"post_tags": "</span>",
"fields": {
"name": {}
}}
}
//结果:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808291,
"hits" : [
{
"_index" : "xiaojie",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.9808291,
"_source" : {
"name" : "小杰学java",
"age" : "25",
"sex" : "男"
},
"highlight" : {
"name" : [
"小<span class='key' style='color:red'>杰</span>学java"]}}]
}}

   每天更新Spring Boot 整合ElasticSearch

结合狂神的视频所做的一些笔记:视频地址:https://www.bilibili.com/video/BV17a4y1x7zq?p=13&spm_id_from=pageDriver

ElasticSearch的简单api介绍的更多相关文章

  1. ElasticSearch的API介绍

    ElasticSearch的API介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ES是基于Restful风格 1>ES是基于Restful风格 Elasticsea ...

  2. Springboot整合elasticSearch的官方API实例

    前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...

  3. ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  4. Elasticsearch环境搭建和介绍(Windows)

    一.Elasticsearch介绍和安装 1.1 介绍  Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticse ...

  5. elasticsearch中的API

    elasticsearch中的API es中的API按照大类分为下面几种: 文档API: 提供对文档的增删改查操作 搜索API: 提供对文档进行某个字段的查询 索引API: 提供对索引进行操作 查看A ...

  6. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  7. SharePoint Client Object Model API 介绍以及工作原理解析

    CSOM和ServerAPI 的对比 SharePoint从2010开始引入了Client Object Model的API(后文中用CSOM来代替),从名字来看,我们可以简单的看出,该API是面向客 ...

  8. vue学习笔记(二)——简单的介绍以及安装

    学习编程需要的是 API+不断地练习^_^ Vue官网:https://cn.vuejs.org/ 菜鸟教程:http://www.runoob.com/vue2/vue-tutorial.html ...

  9. FastDFS api介绍

    1. 命令行api介绍 FastDFS提供了可用于运维测试的命令行api,下面进行介绍: 1.1 fastdfs服务管理 tracker进程服务管理脚本 /etc/init.d/fdfs_tracke ...

  10. Elasticsearch利用cat api快速查看集群状态、内存、磁盘使用情况

    使用场景 当Elasticsearch集群中有节点挂掉,我们可以去查看集群的日志信息查找错误,不过在查找错误日志之前,我们可以通过elasticsearch的cat api简单判断下各个节点的状态,包 ...

随机推荐

  1. 记一次 .NET某新能源MES系统 非托管泄露

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序有内存泄露,跟着我的错题集也没找出是什么原因,刚好手头上有一个 7G+ 的 dump,让我帮忙看下是怎么回事,既然找到我了那就给他看看吧,不过 ...

  2. 基于react18+vite4+arco.design搭建极简版后台管理模板

    趁着国庆前夕整了一个vite4结合react18搭建后台管理模板,搭配上字节团队react组件库ArcoDesign,整体操作功能非常丝滑.目前功能支持多种模板布局.暗黑/亮色模式.国际化.权限验证. ...

  3. tiptopGP5.2链接所有表或报不存在函数处理

    修改交易的表时需要特别注意,改完要关联所有有关的表r.rb.rb pja_file 当链接提示不存在的函数调用,又无法确定具体是那个关联程序时, 可以在本函数内先定义这个报错的函数,重新链接时,系统会 ...

  4. 【RocketMQ】RocketMQ存储结构设计

    CommitLog 生产者向Broker发送的消息,会以顺序写的方式,写入CommitLog文件,CommitLog文件的根目录由配置参数storePathRootDir决定,默认每一个CommitL ...

  5. 手写商用Java虚拟机HotSpot,疯狂磨砺技术中

    在当前Java行业激烈竞争的形式下,唯有掌握技术,心中才不能慌.在多年前,我就开始苦练底层技术,但是眼看百遍也不如手过一遍,所以我打算把虚拟机的精华实现部分用手敲出来,这个过程注定不会轻松,但是心态不 ...

  6. 虹科干货|Redis企业版数据库为企业「数据安全」叠加最强Buff!

    "这是一场可预见的噩梦!" 近期,黑客通过攻击亚洲最大两家数据中心-万国数据和新科电信媒体,获取国际巨头企业的登录凭证,引发了2000多家企业史诗级数据泄露.中国作为全球第二大托管 ...

  7. Util应用框架快速入门(4) - 集成测试开发入门

    本文演示Util应用框架开发的项目中如何编写集成测试. 准备 完成 Web Api 快速入门,本文将在之前生成的示例项目上讲解集成测试的开发. 测试概述 自动化测试对于Util应用框架的开发非常重要, ...

  8. Java安全机制之一——SecurityManager和AccessController

    前言: 在看socket相关代码的时候,AbstractPlainSocketImpl中的一段代码吸引了我,其实之前见过很多次类似的代码,但一直不想去看,只知道肯定和权限什么的相关,这次既然又碰到了就 ...

  9. 数论笔记(Full Version)

    数论笔记(Full Version) 一.数论基础: 1.整除: 重新定义除法: 对于计算式:\(a\div b\) 来说,其结果可以变化为以下的式子:$$a = b\lfloor \frac{a}{ ...

  10. HarmonyOS 实战项目

    引言 本章将介绍如何在 HarmonyOS 上进行实际项目开发.我们将从项目需求分析开始,逐步完成项目的设计.开发.测试和上线过程. 目录 项目需求分析 项目设计 项目开发 项目测试 项目上线 总结 ...