【Elasticsearch】ES简单快速入门

news2024/11/26 13:53:50

ES简单快速入门

概述

  • Elasticsearch是一个分布式全文搜索引擎

下载与安装

https://www.elastic.co/cn/downloads/elasticsearch

下载之后 解压文件夹,进入bin目录,双击elasticsearch.bat文件

一开始初始化时间比较久,之后初始化之后,浏览器输入localhost:9200看看有没有启动成功

在这里插入图片描述

索引与操作

启动ES服务之后,我们使用Postman发送一个put请求,添加一个索引,创建books索引

在这里插入图片描述

使用get操作 查询索引

在这里插入图片描述

下载IK分词器

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

下载之后,解压到plugins文件夹下面

在这里插入图片描述

然后重新启动ES

重新写入数据,通过json数据的形式重新发送数据,最后写入mappings中

mappings写入装在数据的格式

下面定义了之后要写入的数据格式信息

{
    "mappings":{
        "properties":{
            "id":{
                "type":"keyword"
            },
            "name":{
                "type":"text",
                "analyzer":"ik_max_word",
                "copy_to":"all"
            },
            "type":{
                "type":"keyword"
            },
            "description":{
                "type":"text",
                "analyzer":"ik_max_word",
                "copy_to":"all"
            },
            "all":{
                "type":"text",
                "analyzer":"ik_max_word"
            }
        }
    }
}

使用get请求获取数据

在这里插入图片描述

ES文档操作

添加文档信息,上面创建books索引并且定义了它的相关属性,下面进行添加数据

{
    "id":1,
    "name":"springboot",
    "type":"spring",
    "description":"spring"
}

在这里插入图片描述

添加指定id的数据

在这里插入图片描述

然后查询指定id的数据
在这里插入图片描述

使用search查询所有的id

在这里插入图片描述

使用分词查询,查询name中包含good的数据

在这里插入图片描述

删除数据

在这里插入图片描述

springboot整合ES

  • 导入ES坐标
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </dependency>
  • 添加配置,主要是配置服务器
spring.elasticsearch.uris= http://localhost:9200

  • 创建客户端对象 发送索引
package com.ustc;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;

@SpringBootTest
class Quick1ApplicationTests {
    @Test
    void contextLoads() {
    }

    private RestHighLevelClient client;// 创建客户端对象

    @Test
    void testCreateClient() throws IOException {
        // 创建客户端
        HttpHost host = HttpHost.create("http://localhost:9200");
        RestClientBuilder builder = RestClient.builder(host);
        client = new RestHighLevelClient(builder);
        // 创建请求  使用客户端发送请求  创建一个索引请求
        CreateIndexRequest request = new CreateIndexRequest("book");
        client.close();
    }
}


  • 在请求中添加参数 创建带参数的索引
 @Test
    void test2() throws IOException {

//        创建请求
        CreateIndexRequest request = new CreateIndexRequest("hhh");

        String json = "{\n" +
                "    \"mappings\":{\n" +
                "        \"properties\":{\n" +
                "            \"id\":{\n" +
                "                \"type\":\"keyword\"\n" +
                "            },\n" +
                "            \"name\":{\n" +
                "                \"type\":\"text\",\n" +
                "                \"analyzer\":\"ik_max_word\",\n" +
                "                \"copy_to\":\"all\"\n" +
                "            },\n" +
                "            \"type\":{\n" +
                "                \"type\":\"keyword\"\n" +
                "            },\n" +
                "            \"description\":{\n" +
                "                \"type\":\"text\",\n" +
                "                \"analyzer\":\"ik_max_word\",\n" +
                "                \"copy_to\":\"all\"\n" +
                "            },\n" +
                "            \"all\":{\n" +
                "                \"type\":\"text\",\n" +
                "                \"analyzer\":\"ik_max_word\"\n" +
                "            }\n" +
                "        }\n" +
                "    }\n" +
                "}";

        // 设置请求中的参数
        request.source(json, XContentType.JSON);
        client.indices().create(request, RequestOptions.DEFAULT);
    }

文档查询操作

  • 根据id进行查询
    void test4() throws IOException {
        // 按照id进行查询
        GetRequest request = new GetRequest("books","1");
        GetResponse response = client.get(request,RequestOptions.DEFAULT);

        String json = response.getSourceAsString();
        System.out.println(json);

    }

  • 按照条件查询
  @Test
    void test5() throws IOException {
        // 创建查询请求
        SearchRequest request = new SearchRequest("BOOKS");

        // 创建查询条件
        SearchSourceBuilder builder = new SearchSourceBuilder();
        builder.query(QueryBuilders.termQuery("name","java"));
        request.source(builder);

        SearchResponse response = client.search(request,RequestOptions.DEFAULT);
        SearchHits hits = response.getHits();

        for(SearchHit hit: hits){
            String source = hit.getSourceAsString();
            System.out.println(source);
        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/782168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Istio Pilot源码学习(一):Pilot-Discovery启动流程、ConfigController配置规则发现

本文基于Istio 1.18.0版本进行源码学习 1、Pilot-Discovery工作原理 Pilot-Discovery是Istio控制面的核心&#xff0c;负责服务网格中的流量管理以及控制面和数据面之间的配置下发 Pilot-Discovery从注册中心&#xff08;如Kubernetes&#xff09;获取服务信息并汇集&#xff…

新版UI盲盒抽奖系统源码-带H5端小程序端可打包APP_带安装教程

新版UI盲盒抽奖系统源码-带H5端小程序端可打包APP,这套盲盒系统小白看了一下里面没有搭建教程的&#xff0c;但是盲盒的搭建方式都是差不多的这套就放给你们自己研究了&#xff0c;UI还是很好看的感兴趣可以自己搭建看看。

Vue中TodoList案例_勾选

与上一篇Vue中TodoList案例_添加有三个文件变化了 App.vue&#xff1a;中加了checkTodo方法 <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHeader :addTodo"addTodo"/&…

【Linux】信号保存信号处理

前言&#xff1a;对信号产生的思考 上一篇博客所说的信号产生&#xff0c;最终都要有OS来进行执行&#xff0c;为什么&#xff1f;OS是进程的管理者&#xff01;信号的处理是否是立即处理的&#xff1f;在合适的时候 -》那什么是合适的时候&#xff1f;信号如图不是被立即处理…

动态规划入门第3课,经典DP问题2 --- 背包问题

练习1 第1题 方案数 查看测评数据信息 给你n个整数&#xff0c;每个数可选或不选&#xff0c;要求选一些数&#xff0c;使它们的和为S&#xff0c;问有多少种方案&#xff1f; 输入格式 第一行&#xff1a;2个整数n和s&#xff0c;范围都在[1, 100]。 第二行&#xff1a;n个…

spring boot3 集成swagger3

快速开始 | Knife14j 官方的推荐 1. 设置pom.xml 主要是引入nexus-maven&#xff0c;com.github.xiaoymin 2个&#xff0c;cn.hutool&#xff0c;org.springframework <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://ma…

Linux超详细的了解

文章目录 前言Linux的简介不同应用领域的主流操作系统Linux系统历史Linux系统各版本 Linux的安装安装方式介绍安装Linux网卡设置安装SSH连接工具finalShell连接虚拟机Linux和Windows目录结构对比Linux目录介绍 Linux常用命令Linux命令初体验文件目录命令ls命令cd命令cat命令mor…

【Hammerstein模型的级联】快速估计构成一连串哈默斯坦模型的结构元素研究(Matlab代码实现)

&#x1f4a5;1 概述 在许多振动应用中&#xff0c;所研究的系统略微非线性。Hammerstein模型的级联可以方便地描述这样的系统。Hammerstein提供了一种基于指数正弦扫描相位属性的简单方法。 构成一连串Hammerstein模型的结构元素可以在快速估计中起到关键的作用。Hammerstei…

260. 只出现一次的数字 III

题目描述&#xff1a; 主要思路&#xff1a; 首先通过抑或的方式可以将所有两个的数字全部排除&#xff0c;得到两个单个数字的异或值。 接下来将当前得到的异或值取最低一位的1。 分析异或值的每一位&#xff0c;为1的肯定是两个数中一个有一个没有。于是可以通过这一特性将两…

(转载)PID神经元网络解耦控制算法(matlab实现)

​本博客的完整代码获取&#xff1a;https://www.mathworks.com/academia/books/book106283.html​ 1案例背景 1.1PID 神经元网络结构 PID神经元网络从结构上可以分为输人层、隐含层和输出层三层&#xff0c;n个控制量的PID神经元网络包含n个并列的相同子网络,各子网络间既相…

【车载开发系列】AUTOSAR DemComponent和DemDTC

【车载开发系列】AUTOSAR DemComponent和DemDTC 【车载开发系列】AUTOSAR DemComponent和DemDTC 【车载开发系列】AUTOSAR DemComponent和DemDTC一. DemComponent概念二. DemDTC概念三. 常用设置参数DemDTCClass1&#xff09; DemDTCFunctional2&#xff09;DemDTCSeverity3&am…

正点原子ubuntu虚拟机 使用QT虚拟键盘

目录 下载源码使用QT creator 编译移植库文件 http://t.csdn.cn/3QWOj https://blog.csdn.net/LuoLewin/article/details/124283314 本文参考这篇文章&#xff0c;使用正点原子的Ubuntu虚拟机&#xff0c;成功实现QT虚拟键盘&#xff0c;其中使用的方法做下记录&#xff0c;以免…

在Goland上配置GO环境

基本可以参照&#xff1a;https://segmentfault.com/a/1190000023710741 几点说明&#xff1a; 如果项目中有mod文件&#xff0c;然后提示&#xff1a;$GOPATH/go.mod exists but should not,可以如下操作&#xff1a; 设置进入到这个页面&#xff1a; 如何要安装一些包&…

数据结构--图的遍历 BFS

数据结构–图的遍历 BFS 树的广度优先遍历 从 1 结点进行 b f s bfs bfs的顺序&#xff1a; 【1】 【2】【3】【4】 【4】【6】【7】【8】 图的广度优先遍历 从 2 号点开始 b f s bfs bfs的顺序&#xff1a; 【2】 【1】【6】 【5】【3】【7】 【4】【8】 树 vs 图 不存在“回…

appium中toast识别

目录 一、什么是Toast&#xff1f; 二、环境前提 三、修改配置 四、安装驱动 五、常见报错及解决方案 1、cnpm 不识别&#xff0c;提示不是内部或外部命令 2、npm 也不识别 3、报错 六、代码节选 一、什么是Toast&#xff1f; Android中的Toast是一种简易的消息提示框…

IDEA+springboot+ MyBatis +ssm+ Bootstrap+Mysql房屋租赁系统源码

IDEAspringboot MyBatis ssm BootstrapMysql房屋租赁系统源码 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.房源列表3.添加房源4.在租列表5. 已退租列表6. 看房申请7. 退租申请8. 待处理报障9.已处理报障10.我要收租11.租客待缴租金12.租客已缴租金13.查看日程14.添加日…

2023.07.23 学习周报

文章目录 摘要文献阅读1.题目2.问题3.解决方案4.方法4.1 框架4.2 基于高斯扩散的修复方法4.3 PM2.5的误差校正模型4.4 PM2.5数据修复的GD-GRU模型4.5 评估指标 5.实验5.1 网络参数5.2 实验结果 6.结论7.展望 Ns方程1.NS方程每一项的物理意义2.NS方程的推导过程3.深度学习与NS方…

机器学习预测指数

导包&#xff0c;收集数据 import numpy as np import pandas as pd import talib import warnings warnings.filterwarnings(ignore) import tushare as tsdata ts.get_k_data(codehs300, start2005-04-08, end2023-11-08, ktypeD) data data.set_index(date) data data[[…

ftp和sftp区别,以及xftp的使用

网上找链接找的很辛苦对吧&#xff01; 网上下载的破解版还不用。而且用没多久又说要更新了&#xff0c;又得重新找。 这下直接把官方免费获取链接发给你&#xff0c;就不用在被这种事情麻烦了。 家庭/学校免费 - NetSarang Website (xshell.com):家庭/学校免费 - NetSarang W…

JVM运行时数据区——方法区、堆、栈的关系

方法区存储加载的字节码文件内的相关信息和运行时常量池&#xff0c;方法区可以看作是独立于Java堆的内存空间&#xff0c;方法区是在JVM启动时创建的&#xff0c;其内存的大小可以调整&#xff0c;是线程共享的&#xff0c;并且也会出现内存溢出的情况&#xff0c;也可存在垃圾…