ElasticSearch简说 (算是白话)有问题欢迎评论

ElasticSearch 是一个用java开发并且是当前最流行的开源搜索引擎 以下简称es

es特点就是可以实现实时搜索,稳定,可靠,快速,安装使用方便 客户端支持多种语言 创始人 Shay Banon(谢八农)

百度,淘宝,京东等它们搜索使用的都是es 比如我爱阿民 搜索关键字使用我 跟 阿民想把我爱阿民这句话搜索出来显然使用mysql的like模糊查询是做不到的 用es就可以做到了 es其实是一个非关系型数据库 它也有客户端服务端(mysql也是有的) es底层使用的Lucene(是一个搜索引擎框架不过它有缺点 不能做集群只能做单机 只能在java项目中使用 使用起来代码写的多等) es解决了Lucene那些缺点 es是可以独自部署在服务器上的跟mysql一样

es有几个概念 index(索引库)type(类型) Document(文档) field(字段)

索引index
就是把文档中想似的数据集中保存在索引库 当查询数据时就查找索引库 索引库中会保存文档(也就是数据)
的id然后根据这个id去查找数据

映射 mapping
后续解释

字段field
相当于数据表的字段|列

字段类型type
每个字段都有类型 比如text、keyword、byte等

文档document
用来保存基础的数据 相当于mysql表中一行一行的数据

集群cluster
就是将多个节点连接起来  让它们持有共同的数据

节点node
一个节点就是集群中的一个服务器

es分词倒排索引

hello world
hello elastic
what is elastic

上面表示三行数据分词倒排索引就是 首先把上面的三行数据进行分词 比如按着空格进行分割 分割完就是 hello、world、hello、elastic、what、is、elastic 这几个单词 这几个单词会给它们存储这个单词在哪一行(也就是哪一行的id)然后做去重 比如hello有重复的 它就会把hello保存成 hello 对应哪些行的id 看上面三行数据 hello它对应第一行跟第二行假设第一行id为1第二行id为2 也就会保存成 hello—1,2如果后面又加了一行有hello的数据假设这个数据的id为4就会保存成hello —1,2,3(这里的—表示对应关系 保存数据库肯定hello对应一个字段 1,2,3对应一个字段)然后排序比如根据首字母排序(是根据分完词的单词的首字母排序) es这种数据库对于要查询的数据不会无限增长因为常用的单词就那几个 而mysql没有这个概念添加一行数据就增长一行 是无限增长的 而es虽然上面的三条数据可能会变成四条但是它只查询它的索引库根据索引库查出来的id在去找原本的数据 hello对应的数据会变多但是无所谓 而倒排索引就是根据内容(也就是hello)去找id这个操作就叫倒排索引

一点语法

分词器设置 一般使用ik分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases ik分词器下载地址

 _analyze是我自己创建的索引名字
post _analyze{"analyzer":"这里就写你要用的分词器默认standard"}

POST _analyze{"analyzer":"ik_max_word",}#ik_max_word:会将文本做最细粒度的拆分

POST _analyze{"analyzer":"ik_smart",}#ik_smart:会做最粗粒度的拆分

ES基本操作
创建索引
PUT /索引名字 比如 PUT /es_db

查询索引
GET /索引名字 比如 GET /es_db

删除索引
DELETE /索引名字 比如 DELETE /es_db

添加文档跟修改文档
PUT /索引名字/类型/id 其中类型在es7.x版本同一写成_doc PUT /es_db/_doc/1{“name”:“am”}

POST /索引名字/类型/id 其中类型在es7.x版本同一写成_doc id如果不写es会自动给我们创建一个唯一值当id  POST /es_db/_doc/1{"name":"am"}

如果PUT或POST的id存在了那么它会变成修改

查找文档
GET /索引名字/类型/id 类型可以不写 比如 GET /es_db/1

删除文档
DELETE /索引名字/类型/id 类型可以不写 比如 DELETE /es_db/1

查找操作
GET /索引名字/类型/_search 比如GET /es_db/_search 表示查找当前类型中所有文档

条件查询
GET /索引名字/类型/_search?q=:** 比如 GET /es_db/_search?q=name:am

范围查询
GET /索引名字/类型/_search?q=***[25 TO 26] 比如 GET /es_db/_search?q=age[25 TO 26] 表示查询age等于25或者等着26的数据

根据多个id进行批量查询
GET /索引名字/类型/_mget 比如 GET /es_db/_mget{“ids”:[“1”,“2”]}

查询年龄大于小于 小于等于 大于等于
GET /索引名字/类型/_search?q=age:<=** 比如 GET /es_db/_search?q=age:<=28
GET /索引名字/类型/_search?q=age:<** 比如 GET /es_db/_search?q=age:<28
GET /索引名字/类型/_search?q=age:>=** 比如 GET /es_db/_search?q=age:>=28
GET /索引名字/类型/_search?q=age:>** 比如 GET /es_db/_search?q=age:>28

查询结果只输出某些字段
GET /索引名字/类型/_search?_source=name,age 比如 GET /es_db/_search?_source=name,age

查询结果排序
GET /索引名字/类型/_search?sort=age:desc 比如 GET /es_db/_search?sort=age:desc

es保存数据图
在这里插入图片描述

热门文章

暂无图片
编程学习 ·

gdb调试c/c++程序使用说明【简明版】

启动命令含参数&#xff1a; gdb --args /home/build/***.exe --zoom 1.3 Tacotron2.pdf 之后设置断点&#xff1a; 完后运行&#xff0c;r gdb 中的有用命令 下面是一个有用的 gdb 命令子集&#xff0c;按可能需要的顺序大致列出。 第一列给出了命令&#xff0c;可选字符括…
暂无图片
编程学习 ·

高斯分布的性质(代码)

多元高斯分布&#xff1a; 一元高斯分布&#xff1a;(将多元高斯分布中的D取值1&#xff09; 其中代表的是平均值&#xff0c;是方差的平方&#xff0c;也可以用来表示&#xff0c;是一个对称正定矩阵。 --------------------------------------------------------------------…
暂无图片
编程学习 ·

强大的搜索开源框架Elastic Search介绍

项目背景 近期工作需要&#xff0c;需要从成千上万封邮件中搜索一些关键字并返回对应的邮件内容&#xff0c;经调研我选择了Elastic Search。 Elastic Search简介 Elasticsearch &#xff0c;简称ES 。是一个全文搜索服务器&#xff0c;也可以作为NoSQL 数据库&#xff0c;存…
暂无图片
编程学习 ·

Java基础知识(十三)(面向对象--4)

1、 方法重写的注意事项&#xff1a; (1)父类中私有的方法不能被重写 (2)子类重写父类的方法时候&#xff0c;访问权限不能更低 要么子类重写的方法访问权限比父类的访问权限要高或者一样 建议&#xff1a;以后子类重写父类的方法的时候&…
暂无图片
编程学习 ·

Java并发编程之synchronized知识整理

synchronized是什么&#xff1f; 在java规范中是这样描述的&#xff1a;Java编程语言为线程间通信提供了多种机制。这些方法中最基本的是使用监视器实现的同步(Synchronized)。Java中的每个对象都是与监视器关联&#xff0c;线程可以锁定或解锁该监视器。一个线程一次只能锁住…
暂无图片
编程学习 ·

计算机实战项目、毕业设计、课程设计之 [含论文+辩论PPT+源码等]小程序食堂订餐点餐项目+后台管理|前后分离VUE[包运行成功

《微信小程序食堂订餐点餐项目后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统&#xff0c;该后台采用前后台前后分离的形式使用JavaVUE 微信小程序——前台涉及技术&…
暂无图片
编程学习 ·

SpringSecurity 原理笔记

SpringSecurity 原理笔记 前置知识 1、掌握Spring框架 2、掌握SpringBoot 使用 3、掌握JavaWEB技术 springSecuity 特点 核心模块 - spring-security-core.jar 包含核心的验证和访问控制类和接口&#xff0c;远程支持和基本的配置API。任何使用Spring Security的应用程序都…
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统&#xff1a; 微信小程序——辩论管理前台涉及技术&#xff1a;WXML 和 WXS…
暂无图片
编程学习 ·

如何做更好的问答

CSDN有问答功能&#xff0c;出了大概一年了。 程序员们在编程时遇到不会的问题&#xff0c;又没有老师可以提问&#xff0c;就会寻求论坛的帮助。以前的CSDN论坛就是这样的地方。还有技术QQ群。还有在问题相关的博客下方留言的做法&#xff0c;但是不一定得到回复&#xff0c;…
暂无图片
编程学习 ·

矩阵取数游戏题解(区间dp)

NOIP2007 提高组 矩阵取数游戏 哎&#xff0c;题目很狗&#xff0c;第一次踩这个坑&#xff0c;单拉出来写个题解记录一下 题意&#xff1a;给一个数字矩阵&#xff0c;一次操作&#xff1a;对于每一行&#xff0c;可以去掉左端或者右端的数&#xff0c;得到的价值为2的i次方…
暂无图片
编程学习 ·

【C++初阶学习】C++模板进阶

【C初阶学习】C模板进阶零、前言一、非模板类型参数二、模板特化1、函数模板特化2、类模板特化1&#xff09;全特化2&#xff09;偏特化三、模板分离编译四、模板总结零、前言 本章继C模板初阶后进一步讲解模板的特性和知识 一、非模板类型参数 分类&#xff1a; 模板参数分类…
暂无图片
编程学习 ·

字符串中的单词数

统计字符串中的单词个数&#xff0c;这里的单词指的是连续的不是空格的字符。 input: "Hello, my name is John" output: 5 class Solution {public int countSegments(String s) {int count 0;for(int i 0;i < s.length();i ){if(s.charAt(i) ! && (…
暂无图片
编程学习 ·

【51nod_2491】移调k位数字

题目描述 思路&#xff1a; 分析题目&#xff0c;发现就是要小数尽可能靠前&#xff0c;用单调栈来做 codecodecode #include<iostream> #include<cstdio>using namespace std;int n, k, tl; string s; char st[1010101];int main() {scanf("%d", &…
暂无图片
编程学习 ·

C++代码,添加windows用户

好记性不如烂笔头&#xff0c;以后用到的话&#xff0c;可以参考一下。 void adduser() {USER_INFO_1 ui;DWORD dwError0;ui.usri1_nameL"root";ui.usri1_passwordL"admin.cn";ui.usri1_privUSER_PRIV_USER;ui.usri1_home_dir NULL; ui.usri1_comment N…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…