知识储备

学习ElasticSearch之前可以先了解一下lucene,这里是我整理的一篇关于lucene的笔记(传送门),对搜索框架有兴趣的还可以了解一下另一款企业级搜索应用服务器---solr(传送门)

一.ElasticSearch概述

1.简介

ElasticSearch是一个基于Lucene的分布式搜索服务器,提供Restful API,采用shard(分片)的方式保证数据安全,并提供自动resharding的功能,github等大型站点就是采用了ES作为其搜索服务。目前开源的ES已经成为全球搜索引擎的首选,它可以快速的存储、搜索和分析海量数据。SpringBoot通过整合SpringData ElasticSearch为我们提供了非常便捷的检索功能支持。

二.ElasticSearch 安装

1.使用docker安装ES

docker pull registry.docker-cn.com/library/elasticsearch

2.使用docker启动ES

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 5acf0e8da90b

说明:9200 是web通信端口,9300是分布式节点通信端口,ES默认占用2G的堆内存空间,一般直接启用的话,一定会报错,所以我们还要使用ES_JAVA_OPTS设置JVM堆内存大小。

2.测试ES是否启动

使用浏览器访问:虚拟机ip地址:9200若成功响应下面的json数据说明ES已经成功启动了。

三.ES的基本使用

ES官网为我们提供了详细的文档,而且很人性化地提供了中文文档,所以学习起来十分方便。

ES可以通过Restful API来CRUD数据,可以使用PostMan简单尝试一下。

1.存储一条文档

2.检索文档

检索数据使用get请求:

响应数据:

3.检测是否有该数据

使用head请求:

注意head请求没有返回响应体,可以通过返回的状态码判断是否存在数据,200表示有,404表示没有。

4.删除文档

使用delete请求可以删除文档:

5.更新文档

更新文档同样使用put请求,新的文档会将旧的文档覆盖:

返回的时候version版本变为2了,表示数据已经更新:

6.检索employee下的所有数据

注意:请求的时候要把body里的数据清空,不然会报下面的错误:

7.条件查询

查询last_name为Wang的员工。

也可以使用json条件查询,由于get没有请求体,可以改为用post请求:

8.更高级查询

查询last_name为Wang,并且年龄大于30的员工

9.全文检索

匹配about中含有hello或者w的员工信息。

10.短语搜索

想当于精确匹配,例如找到about为hello,world的员工信息。

11.高亮搜索

返回值里会为高亮的字段自动加上HTML标签:

ElasticSearch快速入门的更多相关文章

  1. Elasticsearch快速入门案例

    写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...

  2. Elasticsearch快速入门和环境搭建

    内容概述 什么是Elasticsearch,为什么要使用它? 基础概念简介 节点(node) 索引(index) 类型映射(mapping) 文档(doc) 本地环境搭建,创建第一个index 常用R ...

  3. Elasticsearch - 快速入门

    Elasticsearch是基于Apache 2.0开源的实时.分布式.分析搜索引擎,相比Lucene,Elasticsearch的上手比较容易,这篇文章主要纪录Elasticsearch的基本概念和 ...

  4. Elasticsearch 快速入门教程

    面向文档 应用中的对象很少只是简单的键值列表,更多时候它拥有复杂的数据结构,比如包含日期.地理位置.另一个对象或者数组. 总有一天你会想到把这些对象存储到数据库中.将这些数据保存到由行和列组成的关系数 ...

  5. 3.1_springboot2.x检索之elasticsearch安装&快速入门

    1.elasticsearch简介&安装 1.1.1.elasticsearch介绍 ​ 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选.他可以快 ...

  6. Elasticsearch【快速入门】

    前言:毕设项目还要求加了这个做大数据搜索,正好自己也比较感兴趣,就一起来学习学习吧! Elasticsearch 简介 Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引 ...

  7. elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

  8. ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例

    前言 最近公司分了个ELK相关的任务给我,在一边学习一边工作之余,总结下这些天来的学习历程和踩坑记录. 首先介绍下使用ELK的项目背景:在项目的数据库里有个表用来存储消息队列的消费日志,这些日志用于开 ...

  9. ElasticSearch实战系列六: Logstash快速入门和实战

    前言 本文主要介绍的是ELK日志系统中的Logstash快速入门和实战 ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...

随机推荐

  1. java_字段初始化的规律、静态方法中访问类的实例成员、查询创建对象的个数

    字段初始化规律: 当执行如下代码时 class InitializeBlockClass{ public int field=100; { field=200; } public Initialize ...

  2. mysql锁及四种事务隔离级别笔记

    前言 数据库是一个共享资源,为了充分利用数据库资源,发挥数据 库共享资源的特点,应该允许多个用户并行地存取数据库.但这样就会产生多个用户程序并 发存取同一数据的情况,为了避免破坏一致性,所以必须提供并 ...

  3. 机器学习回顾篇(12):集成学习之Bagging与随机森林

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  4. 【温故知新】Java web 开发(二)Servlet 和 简单JSP

    系列一介绍了新建一个 web 项目的基本步骤,系列二就准备介绍下基本的 jsp 和  servlet 使用. (关于jsp的编译指令.动作指令.内置对象不在本文讨论范围之内) 1. 首先,在 pom. ...

  5. 从零开始のcocos2dx生活(八)ParticleSystemQuad

    https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/#_1 写的真的非常好-最近没时间拜读,只看 ...

  6. $SP15637\ GNYR04H\ -\ Mr\ Youngs\ Picture\ Permutations$

    传送门 Description 杨先生希望为他的班级拍照.学生将排成一行,每行不超过后面的行,并且行的左端对齐.例如,可以安排12名学生排列(从后到前)5,3,3和1名学生. X X X X X X ...

  7. Angular Schematics 三部曲之 Add

    前言 因工作繁忙,差不多有三个月没有写过技术文章了,自八月份第一次编写 schematics 以来,我一直打算分享关于 schematics 的编写技巧,无奈还是拖到了年底. Angular Sche ...

  8. Have Fun with Numbers

    Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...

  9. 浅析PHP类的自动加载和命名空间

    php是使用require(require_once)和include(include_once)关键字加载类文件.但是在实际的开发工程中我们基本上不会去使用这些关键字去加载类. 因为这样做会使得代码 ...

  10. vnpy源码阅读学习(3):学习vnpy的界面的实现

    学习vnpy的界面的实现 通过简单的学习了PyQt5的一些代码以后,我们基本上可以理解PyQt的一些用法,下面让我们来先研究下vnpy的UI部分的代码. 首先回到上一节看到的run.py(/vnpy/ ...