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 {@Beanpublic 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 {@AutowiredElasticSearchConfig 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中的数据封装到NewsESNewsES 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中的数据封装到NewsESNewsES 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";
//    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark SQL基础

SparkSQL基本介绍 什么是Spark SQL Spark SQL是Spark多种组件中其中一个,主要是用于处理大规模的结构化数据 什么是结构化数据: 一份数据, 每一行都有固定的列, 每一列的类型都是一致的 我们将这样的数据称为结构化的数据 例如: mysql的表数据 1 张三 20 2 李四 15 3 王五 1…

【揭秘AI】穿越时光隧道,探秘AI起源与发展01

算盘 被誉为世界上最古老的计算机之一&#xff0c;是一种手动操作的计算工具&#xff0c;起源于中国。它主要由框、梁和珠子组成&#xff0c;通过移动珠子在档位上的位置来进行加减乘除运算。算盘的发明时间可以追溯到公元前或公元初期&#xff0c;据历史记载&#xff0c;东汉…

Angular系列教程之MVC模式和MVVM模式

文章目录 MVC模式MVVM模式MVC与MVVM的区别Angular如何实现MVVM模式总结 在讨论Angular的时候&#xff0c;我们经常会听到MVC和MVVM这两种设计模式。这两种模式都是为了将用户界面(UI)和业务逻辑分离&#xff0c;使得代码更易于维护和扩展。在这篇文章中&#xff0c;我们将详细介…

游戏素材永不缺,免费在线AI工具Scenario功能齐全,简单易用

Scenario是一个在线的AI驱动的工具&#xff0c;主要用于游戏艺术创作。它提供了一套全面的功能&#xff0c;旨在帮助游戏开发者创建与其独特风格和艺术方向相符的独特、高质量的游戏艺术。Scenario的突出特点之一是它的微调能力&#xff0c;允许用户根据独特的风格和艺术方向训…

uniapp 编译后文字乱码的解决方案

问题: 新建的页面中编写代码&#xff0c;其中数字和图片都可以正常显示&#xff0c;只有中文编译后展示乱码 页面展示也是乱码 解决方案: 打开HuilderX编辑器的【文件】- 【以指定编码重新打开】- 【选择UTF-8】 然后重新编译就可以啦~ 希望可以帮到你啊~

如何利用小程序介绍公司品牌形象?

企业小程序的建设对于现代企业来说已经成为了一项必不可少的工作。随着移动互联网的快速发展&#xff0c;越来越多的职场人士和创业老板希望通过小程序来提升企业形象&#xff0c;增强与用户的互动&#xff0c;实现更好的商业效果。在这个过程中&#xff0c;使用第三方制作平台…

CMU15-445-Spring-2023-Project #3 - 前置知识(lec10-14)

Lecture #10_ Sorting & Aggregation Algorithms Query Plan 数据库系统会将 SQL 编译成查询计划。查询计划是一棵运算符树。 Sorting DBMS 需要对数据进行排序&#xff0c;因为根据关系模型&#xff0c;表中的tuple没有特定的顺序。排序使用 ORDER BY、GROUP BY、JOIN…

leedcode刷题笔记day1

题目大意&#xff1a; 暴力解法 两个for循环&#xff08;也是我一看到题目想到的方法&#xff09; 枚举在数组中所有的不同的两个下标的组合逐个检查它们所对应的数的和是否等于 target 复杂度分析 时间复杂度:O(n2)&#xff0c;这里 n 为数组的长度 空间复杂度:O(1)&#x…

Python进程池multiprocessing.Pool

环境&#xff1a; 鲲鹏920:192核心 内存&#xff1a;756G python&#xff1a;3.9 python单进程的耗时 在做单纯的cpu计算的场景&#xff0c;使用单进程核多进程的耗时做如下测试&#xff1a; 单进程情况下cpu的占用了如下&#xff0c;占用一半的核心数&#xff1a; 每一步…

IOS-高德地图路径绘制-Swift

本文展示的是在IOS开发中调用高德地图进行驾车路径绘制&#xff0c;开发语言是Swift。 IOS高德地图集成请看&#xff1a;IOS集成高德地图Api 使用路径规划功能需要集成高德地图的搜索功能。 pod AMapSearch定义AMapSearchAPI 定义主搜索对象 AMapSearchAPI &#xff0c;并继承…

Python爬虫实战:IP代理池助你突破限制,高效采集数据

当今互联网环境中&#xff0c;为了应对反爬虫、匿名访问或绕过某些地域限制等需求&#xff0c;IP代理池成为了一种常用的解决方案。IP代理池是一个包含多个可用代理IP地址的集合&#xff0c;可以通过该代理池随机选择可用IP地址来进行网络请求。 IP代理池是一组可用的代理IP地址…

旧路由重置新路由设置新路由设置教程|适用于PPPoE拨号

前言 前几天朋友说路由器想要重置&#xff0c;但不知道怎么弄。所以就想着只帮忙重置路由器的话&#xff0c;只能帮到一个人。但把整个过程写成图文&#xff0c;就可以帮助更多人。 本文章适合电脑小白&#xff0c;请注意每一步哦&#xff01; 注意事项 开始之前需要确认光猫…

FastAdmin上传图片服务端压缩图片,实测13.45M压缩为29.91K

先前条件&#xff1a;第一步安装compose&#xff0c;已安装忽略。 先上截图看效果 一、在fastadmin的根目录里面输入命令安装think-image composer require topthink/think-image二、找到公共上传类&#xff0c;application/common/library/Upload.php&#xff0c;在最下面…

【问题记录】使用命令语句从kaggle中下载数据集

从Kaggle中下载Tusimple数据集 1.服务器环境中安装kaggle 使用命令&#xff1a;pip install kaggle 2.复制下载API 具体命令如下&#xff1a; kaggle datasets download -d manideep1108/tusimple3.配置kaggle.json文件 如果直接使用命令会报错&#xff1a; root:~# kagg…

Java重修第十天—代码进阶

第十天代码进阶&#xff0c;完成以下四个题目&#xff0c;提高编程能力。 第一题 代码实现 package cn.msf.baseJava.d_14;import java.util.*;public class Test1 {public static void main(String[] args) {Random r new Random();ArrayList<Integer> p new ArrayL…

transbigdata笔记:其他方法

1 出租车相关 1.1 taxigps_to_od 提取出租车OD信息 transbigdata.taxigps_to_od(data, col[VehicleNum, Stime, Lng, Lat, OpenStatus]) 输入出租车GPS数据&#xff0c;提取OD信息 data出租车GPS数据col[VehicleNum, Time, Lng, Lat, OpenStatus]五列 比如GPS数据长这样&am…

利用Wireshark分析IP协议

实验.利用Wireshark分析IP协议 一&#xff0e;实验目的 1.掌握Wireshark软件简单的过滤语法 2.掌握IP数据报的组成格式 3.掌握IP分片的计算方法 4.学会利用Wireshark抓包分析IP协议 二&#xff0e;实验环境 1.Wireshark软件 2.Windows 计算机 三&#xff0e;实验预备知识 1.IP…

【Qt】Qt配置

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…

【小白专用】C# 连接 MySQL 数据库

C# – Mysql 数据库连接 1. 配置环境 #前提&#xff1a;电脑已安装Mysql服务&#xff1b; Visual Studio 安装Mysql依赖库&#xff1a; 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet程序包 —> 搜索&#xff0c; 安装Mysql.Data (Oracle); (安装成功后&…

ASP.NET Core 的 Web Api 实现限流 中间件

Microsoft.AspNetCore.RateLimiting 中间件提供速率限制&#xff08;限流&#xff09;中间件。 它是.NET 7 以上版本才支持的中间件&#xff0c;刚看了一下&#xff0c;确实挺好用&#xff0c;下面给大家简单介绍一下&#xff1a; RateLimiterOptionsExtensions 类提供下列用…