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. 利用python将数据写入CSV文件中

    利用python将数据写入CSV文件中 全部代码如下: import csv # 1.创建文件对象 f = open('cav_file.csv', 'w', encoding='utf-8', ne ...

  2. 编译nw-node版本的插件

    编译nw-node版本的插件 下载nwjs对应版本的nodejs 原始源码目录 yh@yh:~/addon$ tree . ├── addon.cc ├── binding.gyp ├── CppLi ...

  3. MySQL运维1-日志

    一.错误日志 错误日志是MySQL中最重要的日志之一,它记录了当MySQL启动和停止时,以及服务器在运行过程中发生的任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,建议首先查看此日志 ...

  4. Linux系列教程——Linux文件编辑、Linux用户管理

    @ 目录 1 Linux基本权限 1.权限基本概述 1.什么是权限? 2.为什么要有权限? 3.权限与用户之间的关系? 4.权限中的rwx分别代表什么含义? 2.权限设置示例 1.为什么要设定权限,我 ...

  5. 一款Redis可视化工具:ARDM | 京东云技术团队

    出众的软件有很多,适合自己的才是最好的. Another Redis Desktop Manager 更快.更好.更稳定的Redis桌面(GUI)管理客户端,兼容Windows.Mac.Linux,性 ...

  6. a-2b

    a-2b   描述 输入两个高精度数a和b,求a-2b的值. 输入 输入两行,第一行是被减数a,第二行是减数b(a>2b并且a,2b的位数不同且不存在借位,且b+b不存在进位). 输出 一行,即 ...

  7. 用MMCls训练手势模型

    import os import json import mmcv import time from mmcv import Config from mmdet.apis import inferen ...

  8. ESP32-MicroPython without Thonny

    why witout Thonny? 最近闲来在ESP32上用MicroPython捣鼓些小玩具,见很多教程推荐使用Thonny.欣然往之,竟是个这,实在不能认同.Thonny esp32-Micro ...

  9. JAVA多线程(1)——线程

    1.定义:线程是一个程序里面不同的执行路径   例子1:只有一个执行路径 (一个分支,即主线程)

  10. jenkins原理篇——成员权限管理

    大家好,我是蓝胖子,前面几节我讲述了jenkins的语法以及我是如何使用jenkins对测试和正式环境进行发布的.但正式环境使用jenkins还有一点很重要,那就是权限管理.正式环境的权限往往不能对所 ...