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. Abp vNext 模块加载机制

    文章目录 生命周期 PreConfigureServices 添加依赖注入或者其它配置之前 ConfigureServices 添加依赖注入或者其它配置 PostConfigureServices 添 ...

  2. DB2---创建返回结果集的函数

    在数据验证中,经常遇到需返回结果集的操作,故整理一个返回结果集的DB2函数,便于后期查阅 1.准备测试表 /*创建测试表:设置结果集的属性为表字段*/ CREATE TABLE Test_EXWAST ...

  3. IDEA工具第一篇:细节使用-习惯设置

    安装好Idea后,直接上手clone代码进入编码时代,有没有那么一刻你会觉用起来没有那么顺手流畅呢? 下面是关于 [Windows] 下安装idea的一些习惯设置[ Mac大致一样 ] 一.修改系统文 ...

  4. HTTP协议中四种交互方法学习

    一.Get Get用于获取信息,注意,他只是获取.查询数据,也就是说它不会修改服务器上的数据.而根据HTTP规范, 获取信息的过程是安全和幂等的.GET请求的数据会附在URL之后,以"?&q ...

  5. 人工智能AI浪潮的掀起,打工人何去何从?

    感谢你阅读本文 自从2022年11月30日OpenAI公司推出了ChatGPT,至今一年了,而这一年国内也发生了天翻地覆的变化,各大厂商纷纷推出了自己的大模型和解决方案,例如百度的文心一言,阿里的通义 ...

  6. CF48C [The Race]

    Problem 题目简述 现有 \(n\) 个已经加过油的加油站,如果当前剩余油量 \(< 10\) 升,则会加 \(x\) 升的油. 初始状态下,有 \(x\) 升油.每个加油站之间的距离为 ...

  7. 2023 SHCTF-校外赛道 WEB WP

    WEEK1 babyRCE <?php $rce = $_GET['rce']; if (isset($rce)) { if (!preg_match("/cat|more|less| ...

  8. [C++]P5024 树形DP 保卫王国

    树形DP 保卫王国P5024 前置知识 1.邻接表 + Dfs(深度优先搜索) 2.基础DP(如 01背包 ) 3.最小公共祖先(LCA) LCA我有写过Blog 首先解读一下题意 城市即为节点 每个 ...

  9. InfiniBand 的前世今生

    今年,以 ChatGPT 为代表的 AI 大模型强势崛起,而 ChatGPT 所使用的网络,正是 InfiniBand,这也让 InfiniBand 大火了起来.那么,到底什么是 InfiniBand ...

  10. JavaScript 语法:数组的定义及其常用属性与方法

    作者:WangMin 格言:努力做好自己喜欢的每一件事 当一个程序需要用到多个数据的时候,这时我们就需要用到数组来将这些数据集合起来,以便后期调用.接下来就开始学习吧!! 数组的定义方法 1 .第一种 ...