Elasticsearch的基本功能和使用

Elasticsearch ,简称为 ES,是一款非常强大的开源的高扩展的分布式全文 检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的 存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能.
官网:https://www.elastic.co/cn
例如京东,淘宝,头条等站内搜索功能.
 ES环境搭建
ES 下载地址: https://www.elastic.co/cn/downloads/elasticsearch 默认打开是最新版本 7.6.1 版下载
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip解压
在bin目录中双击elasticsearch.bat启动
访问 http://127.0.0.1:9200
安装数据可视化界面 elasticsearch head
安装 nodejs
github 下载: https://github.com/mobz/elasticsearch-head/
github 加速器: https://github.ur1.fun/
在 config 目录中的 elasticsearch.yml 文件中配置
# 开启跨域
http.cors.enabled: true
# 所有人访问
http.cors.allow-origin: "*"
命令行进入目录(第一次安装即可)
npm install
启动可视化界面 (需要启动ES才可启动可视化界面)
npm run start

安装可视化 kibana 组件 
Kibana 是一个针对 Elasticsearch 的开源分析及可视化平台,用来搜索、查看交互 存储在 Elasticsearch 索引中的数据。
使用 Kibana,可以通过各种图表进行高级数据分析及展示。Kibana 让海量数据更 容易理解。
下载版本要和 ES 版本一致
下载地址 : https://www.elastic.co/cn/downloads/kibana 默认打开是最新版本 7.6.1 下载版
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-windows-x86_64.zip
汉化 kibana
修改 config 目录下的 kibana.yml 文件 i18n.locale: "zh-CN"
双击 bin 目录下的 kibana.bat 启动

访问http://localhost:5601 

显示界面

SpringBoot使用ES搜索

配置类

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));
        return client;
    }
}

使用

import com.fasterxml.jackson.databind.ObjectMapper;

import com.ffyc.news.config.ElasticSearchConfig;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.io.IOException;


@RestController
@RequestMapping(path = "/es")
public class EsController {
    @Autowired
    ElasticSearchConfig elasticSearchConfig;
    @GetMapping(path = "/indexOper")
    public String indexOper() throws IOException {
        //创建索引库
        CreateIndexRequest request = new CreateIndexRequest("users_index");
        elasticSearchConfig.restHighLevelClient().indices().create(request, RequestOptions.DEFAULT);
        return "success";
        //删除库
//        DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("users");
//        AcknowledgedResponse delete = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
//        System.out.println(delete.isAcknowledged());

//        判断库为例
//        GetIndexRequest getIndexRequest = new GetIndexRequest("users");
//        boolean users =  restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
//        System.out.println(users);

    }

    /*@GetMapping(path = "/docOper")
    public String docOper() throws IOException {
        //模拟从前端传递过来的数据
        News news = new News();
        news.setId(1);
        news.setTitle("美国今年要总统选择,拜登着急了");
        news.setImg("aaaaasssss.jpg");
        news.setContent("少时诵诗书所所所所所所所所所所所所所所所");
        news.setCount(300);

        //把News中的数据封装到NewsES
        NewsES newsES = new NewsES();
        //对象数据复制
        BeanUtils.copyProperties(news,newsES);
        //创建请求对象
        IndexRequest indexRequest  = new IndexRequest("news").id(newsES.getId().toString());
        indexRequest.source(new ObjectMapper().writeValueAsString(newsES), XContentType.JSON);
        //执行
        restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);

        return "success";
    }*/

   /* @GetMapping(path = "/docOper")
    public String docOper() throws IOException {
        //模拟从前端传递过来的数据
        News news = new News();
        news.setId(1);
        news.setTitle("中国航母开往美国,准备开战,拜登着急了");
        news.setImg("ddddddddddddddddddddd.jpg");
        news.setContent("少时诵诗书所所所所所所所所所所所所所所所");
        news.setCount(30000);

        //把News中的数据封装到NewsES
        NewsES newsES = new NewsES();
        //对象数据复制
        BeanUtils.copyProperties(news,newsES);
        //创建一个修改的请求
        UpdateRequest updateRequest = new UpdateRequest("news",newsES.getId().toString());
        updateRequest.doc(new ObjectMapper().writeValueAsString(newsES), XContentType.JSON);

        restHighLevelClient.update(updateRequest,RequestOptions.DEFAULT);
        return "success";
    }*/

  /*  @GetMapping(path = "/docOper")
    public String docOper() throws IOException {
        //创建一个修改的请求
        DeleteRequest deleteIndexRequest = new DeleteRequest("news","1");
        restHighLevelClient.delete(deleteIndexRequest,RequestOptions.DEFAULT);
        return "success";
    }*/

  /*  @GetMapping(path = "/docOper")
    public String docOper() throws IOException {
         //创建一个搜索的请求
        SearchRequest searchRequest = new SearchRequest("news");
                     //封装搜索条件
                     searchRequest.source().query(QueryBuilders.termQuery("title","免费"));
         //发送搜索请求, 接收搜索的结果
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

        ArrayList<NewsES> arrayList  = new ArrayList<>();
        SearchHits hits = search.getHits();
        SearchHit[] hits1 = hits.getHits();
        for (SearchHit searchHit : hits1){
             String json =    searchHit.getSourceAsString();
             NewsES newsES = new ObjectMapper().readValue(json,NewsES.class);
            arrayList.add(newsES);
        }



        return "success";
    }*/

//    @GetMapping(path = "/docOper")
//    public String docOper() throws IOException {
//        //创建一个搜索的请求
//        SearchRequest searchRequest = new SearchRequest("news");
//        //封装搜索条件
//        //设置关键字 高亮显示
//        searchRequest.source().highlighter(new HighlightBuilder().field("title").requireFieldMatch(false));
//        searchRequest.source().query(QueryBuilders.termQuery("title","免费"));
//        //发送搜索请求, 接收搜索的结果
//        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
//
//        ArrayList<NewsES> arrayList  = new ArrayList<>();
//        SearchHits hits = search.getHits();
//        SearchHit[] hits1 = hits.getHits();
//        for (SearchHit searchHit : hits1){
//            String json =    searchHit.getSourceAsString();
//            NewsES newsES = new ObjectMapper().readValue(json,NewsES.class);
//
//            //获取高亮名称
//            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
//            HighlightField titleField = highlightFields.get("title");
//            String highttitle = titleField.getFragments()[0].string();
//            newsES.setTitle(highttitle);//用添加了高亮的标题替换原始文档标题内容
//            arrayList.add(newsES);
//        }
//
//
//
//        return "success";
//    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark---累加器和广播变量

文章目录 1.累加器实现原理2.自定义累加器3.广播变量 1.累加器实现原理 累加器用来把 Executor 端变量信息聚合到 Driver 端。在 Driver 程序中定义的变量&#xff0c;在Executor 端的每个 Task 都会得到这个变量的一份新的副本&#xff0c;每个 task 更新这些副本的值后&…

利用HTML和CSS实现的浮动布局

代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>*{m…

Python武器库开发-武器库篇之Whois信息收集模块化(四十五)

Python武器库开发-武器库篇之Whois信息收集模块化(四十五) 我们在进行渗透的时候&#xff0c;需要进行全面的信息收集&#xff0c;除了主动信息收集之外&#xff0c;我们还经常会进行被动信息收集&#xff0c;Whois信息收集就是其中的一种,我们可以利用一些网站进行Whois信息收…

区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-Adaboost-ABKDE的集成学习长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一…

Java--HashMap中put()方法是如何实现的

一、什么是HashMap HashMap是Java中常用的数据结构之一&#xff0c;它基于哈希表实现&#xff0c;提供了快速的键值对存取能力。在HashMap中&#xff0c;put方法是最常用的方法之一&#xff0c;用于将键值对存储到HashMap中。本文将深入探究HashMap的put方法的实现原理&#x…

vue 作用域插槽、具名插槽

在子组件中使用了具名插槽<slot name"qwe" :games"games" x"我是x" y"我是y"></slot>&#xff0c; 相应的在父组件中使用<template #qwe"data">的语法来接收插槽内容。 这个语法是ok的&#xff0c; 但…

微信使用wx.getLocation

1&#xff0c;小程序管理后台 -「开发」-「开发管理」-「接口设置」” 中完成权限申请&#xff1b; 2&#xff0c;需在 app.json 中声明其需调用的地理位置相关接口 "permission": {"scope.userLocation": { "desc": "你的位置信息将用于小…

如何在 Python3 中使用变量

介绍 变量是一个重要的编程概念&#xff0c;值得掌握。它们本质上是在程序中用于表示值的符号。 本教程将涵盖一些变量基础知识&#xff0c;以及如何在您创建的 Python 3 程序中最好地使用它们。 理解变量 从技术角度来说&#xff0c;变量是将存储位置分配给与符号名称或标…

M1卡和CPU卡学习

目录介绍 01.整体概述介绍 1.1 项目背景说明1.2 IC智能卡说明1.3 基础概念介绍 02.CPU卡基础学习 2.1 CPU操作流程2.2 读卡器与卡交互指令2.3 APDU指令格式2.4 APDU指令组成2.5 发送指令详细剖析2.6 响应指令详细解析 03.M1卡基础学习 3.1 什么是M1卡3.2 M1卡数据结构3.3 M1扇…

晶振线路匹配需要进哪一些测试

晶振线路匹配的测试对于确保晶振性能的稳定性和可靠性至关重要&#xff0c;那么晶振线路匹配需要进哪一些测试呢? 晶振线路匹配测试是确保晶振性能稳定性和可靠性的关键环节。为了全面评估晶振的性能&#xff0c;需要进行一系列的测试&#xff0c;包括负载电容测试、驱动电平…

HarmonyOS 转场动画

今天 我们来说 组件内转场动画 我们可以先编写代码如下 Entry Component struct Index {State flag:boolean true;build() {Column({space: 30}) {Button("转换").onClick(()> {})Image("https://img1.baidu.com/it/u1699929707,733321099&fm253&…

nxp s32k144芯片使用J-LINK程序刷写

1.nxp s32k144 (1)打开软件&#xff1a;J-Flash V6.30j (2)新建工程&#xff1a;file->new project (3)选择芯片型号和 target interface (4)可以保存芯片和接口配置 (5)打开程序&#xff1a;File->open data file &#xff08;6&#xff09;程序刷写&#xff1a;T…

【UE5】交互式展厅数字博物馆交互是开发实战课程

长久以来&#xff0c;我们总是不断被初学者问到类似这样的问题&#xff1a;如何从头到尾做一个交互式程序开发项目&#xff1f;本套课程尝试对这个问题进行解答。 课程介绍视频如下 【UE5】数字展厅交互式开发全流程 【谁适合学习这门课】 本套课程面向初学者&#xff0c;满足…

【加强版】小学数学出题,加减乘除混合运算,支持自定义数字,一键打印

在线预览&#xff1a;在线HTML代码预览和运行工具 - UU在线工具 复制下面代码后到该地址预览即可 注意&#xff1a;在线预览不能打印。如需打印&#xff0c;在电脑本地上新建文本文档&#xff0c;粘贴代码后保存&#xff0c;然后把文件后缀改为.html运行&#xff0c;出题点击…

【Java JVM】栈帧

执行引擎是 Java 虚拟机核心的组成部分之一。 在《Java虚拟机规范》中制定了 Java 虚拟机字节码执行引擎的概念模型, 这个概念模型成为各大发行商的 Java 虚拟机执行引擎的统一外观 (Facade)。 不同的虚拟机的实现中, 通常会有 解释执行 (通过解释器执行)编译执行 (通过即时编…

rust跟我学二:模块编写与使用

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info中模块的使用。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[我的Rust库更新]g…

【物联网】物联网设备和应用程序涉及协议的概述

物联网设备和应用程序涉及协议的概述。帮助澄清IoT层技术栈和头对头比较。 物联网涵盖了广泛的行业和用例&#xff0c;从单一受限制的设备扩展到大量跨平台部署嵌入式技术和实时连接的云系统。 将它们捆绑在一起是许多传统和新兴的通信协议&#xff0c;允许设备和服务器以新的…

小程序样例1:简单待办列表

基本功能&#xff1a; 显示所有待办列表&#xff08;点击不同的文本进行显示&#xff09; 没完成的待办 已完成的待办 新建待办test 清除待办foo 代码js文件&#xff1a; //index.js //获取应用实例 const app getApp(); Page({data: {todo: ,todos: [{"id": 1474…

鸿蒙Harmony-列表组件(List)详解

不要和别人比生活&#xff0c;每个人阶段不同&#xff0c;追求不同&#xff0c;活法自然也不同。只要今天的你能比昨天的你快乐一点点&#xff0c;那你就是自己人生赢家。 目录 一&#xff0c;定义 二&#xff0c;布局与约束 2.1 布局 2.2 约束 三&#xff0c;开发布局 3.1 设置…

LabVIEW模拟荧光显微管滑动实验

LabVIEW模拟荧光显微管滑动实验 在现代生物医学研究中&#xff0c;对微观生物过程的精准模拟和观察至关重要。本案例展示了如何利用LabVIEW软件和专业硬件平台&#xff0c;创新地模拟荧光显微管在滑动实验中的动态行为&#xff0c;这一过程不仅提升了实验效率&#xff0c;还为…