Elasticsearch快速入门及结合Next.js案例使用

news2025/1/10 11:45:06

文章目录

    • 什么是Elasticsearch
    • 安装Elasticsearch
      • 索引
      • 文档
      • 节点
      • 分片
    • 使用Elasticsearch进行全文搜索
      • 连接到Elasticsearch
      • 创建索引和插入数据
      • 创建全文搜索页面
      • 测试全文搜索
    • 结语

在这里插入图片描述

🎉欢迎来到Java学习路线专栏~Elasticsearch快速入门及结合Next.js案例使用


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java学习路线
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

Elasticsearch是一个强大的开源搜索和分析引擎,它可以用于存储、搜索和分析大规模的数据。本文将带您快速入门Elasticsearch,并演示如何在Next.js应用程序中使用Elasticsearch进行全文搜索。
在这里插入图片描述

什么是Elasticsearch

Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,它提供了强大的全文搜索能力。它广泛用于构建实时搜索引擎、日志和事件数据分析、安全信息和指标分析等应用。Elasticsearch的主要特点包括:

  • 分布式:Elasticsearch可以轻松扩展到数百台服务器,支持大规模数据存储和检索。
  • 实时性:它能够以毫秒级的速度进行数据索引和搜索,适用于实时应用程序。
  • 多数据类型:支持结构化数据、半结构化数据和无结构数据的索引和搜索。
  • 多种检索策略:提供全文检索、地理空间搜索、过滤、聚合等多种检索策略。

安装Elasticsearch

要开始使用Elasticsearch,首先需要安装它。您可以从Elasticsearch官方网站下载适用于您操作系统的安装包,并按照官方文档进行安装。安装完成后,您可以启动Elasticsearch服务。在大多数情况下,您只需执行以下命令:bash./bin/elasticsearch这将启动Elasticsearch服务并监听默认端口9200。## Elasticsearch基本概念在使用Elasticsearch之前,了解一些基本概念是很重要的。

索引

Elasticsearch中的数据存储单元称为“索引”。每个索引可以包含一个或多个类型的文档。

文档

文档是Elasticsearch中的基本数据单元,它以JSON格式表示。每个文档都属于一个类型,并存储在一个索引中。文档包含字段,这些字段可以是文本、数字、日期等各种数据类型。

节点

Elasticsearch集群由一个或多个节点组成。每个节点是集群的一部分,它可以存储数据、参与搜索和索引操作,并与其他节点通信以协调工作。

分片

Elasticsearch将索引划分为多个分片,每个分片是一个独立的Lucene索引。分片使数据能够分布在多个节点上,以提高性能和可伸缩性。

在这里插入图片描述

使用Elasticsearch进行全文搜索

下面,我们将演示如何使用Elasticsearch进行全文搜索。我们将创建一个Next.js应用程序,该应用程序允许用户在文章库中执行全文搜索。首先,确保您已安装Node.js和npm。然后,创建一个名为elasticsearch-nextjs的新目录,并在其中初始化一个新的Next.js应用程序:bashnpx create-next-app elasticsearch-nextjs进入应用程序目录并安装必要的依赖项:bashcd elasticsearch-nextjsnpm install @elastic/elasticsearch next-compose-plugins我们使用@elastic/elasticsearch库来与Elasticsearch进行通信,以及next-compose-plugins库来轻松管理插件。

连接到Elasticsearch

首先,我们需要连接到Elasticsearch集群。在应用程序的根目录中创建一个名为elasticsearch.js的文件,并添加以下代码:javascriptimport { Client } from '@elastic/elasticsearch';const esClient = new Client({ node: 'http://localhost:9200' });export default esClient;这将创建一个Elasticsearch客户端并连接到默认的Elasticsearch节点。确保Elasticsearch服务正在运行并在端口9200上监听。

创建索引和插入数据

接下来,我们将创建一个Elasticsearch索引,用于存储文章数据。在elasticsearch.js文件的末尾添加以下代码:javascript// 创建文章索引async function createIndex() { await esClient.indices.create({ index: 'articles', body: { mappings: { properties: { title: { type: 'text' }, content: { type: 'text' }, }, }, }, });}// 插入示例数据async function insertSampleData() { const articles = [ { title: 'Elasticsearch Introduction', content: 'Elasticsearch is a powerful search and analytics engine.' }, { title: 'Getting Started with Next.js', content: 'Next.js is a popular React framework.' }, ]; const body = articles.flatMap((doc) => [ { index: { _index: 'articles' } }, doc, ]); await esClient.bulk({ refresh: true, body });}export { createIndex, insertSampleData };在上面的代码中,我们创建了一个名为articles的索引,并定义了两个字段:titlecontent。然后,我们插入了一些示例文章数据。

创建全文搜索页面

在Next.js应用程序中,我们可以创建一个全文搜索页面,允许用户在文章库中执行搜索操作。在pages目录下创建一个名为search.js的文件,并添加以下代码:
javascriptimport { useEffect, useState } from 'react';import esClient from '../elasticsearch';function Search() { const [searchQuery, setSearchQuery] = useState(''); const [results, setResults] = useState([]); useEffect(() => { if (searchQuery) { esClient .search({ index: 'articles', body: { query: { match: { content: searchQuery, }, }, }, }) .then((response) => { setResults(response.body.hits.hits); }); } else { setResults([]); } }, [searchQuery]); return ( <div> <h1>Full-Text Search</h1> <input type="text" value={searchQuery} onChange={(e) => setSearchQuery(e.target.value)} placeholder="Search articles..." /> <ul> {results.map((result) => ( <li key={result._id}> <h2>{result._source.title}</h2> <p>{result._source.content}</p> </li> ))} </ul> </div> );}export default Search;
在上面的代码中,我们创建了一个名为Search的React组件,它允许用户输入搜索查询,并在Elasticsearch中执行全文搜索。搜索结果将显示在页面上。

测试全文搜索

运行Next.js应用程序:bashnpm run dev现在,您可以在浏览器中访http://localhost:3000/search,在搜索框中输入关键词,应用程序将向Elasticsearch发送搜索请求并显示结果。
在这里插入图片描述

结语

Elasticsearch是一个强大的全文搜索引擎,可以用于各种应用程序,包括实时搜索引擎、日志分析、指标分析等。本文介绍了Elasticsearch的基本概念和快速入门指南,并演示了如何在Next.js应用程序中使用Elasticsearch进行全文搜索。希望这篇文章对您有所帮助,您现在可以开始使用Elasticsearch来增强您的应用程序的搜索功能。如果您想深入了解Elasticsearch,可以查阅Elasticsearch官方文档。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

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

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

相关文章

Hbuilder打包安卓H5-APP,APP与程序分离,更新无需重新打包

一、目标 使用Hbuilder打包H5-APP 两个方式&#xff1a; 1、将自己的H5页面以及js全部打包进apk程序&#xff0c;后续如果更新&#xff0c;只能迭代apk版本&#xff0c;来进行APP更新升级。 2、使用HBuilder打个空包&#xff0c;修改应用入口页面(首页)地址&#xff0c;这里默…

Centos使用tomcat部署jenkins

jenkins的最新版本已经不在支持jdk8&#xff0c;支持的jdk环境如下&#xff1a; 安装jdk环境 yum -y install java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64安装tomcat tomcat官网 cd /optwget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat…

HarmonyOS DevEso环境搭建

DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代码开发、双向预览等功能&#xff0c;以及轻量构建工具DevEco Hvigor 、本地模拟器&#xff0c;持续提升应用及服务开发效率。 1.下载 官方网站&#xff1a; HUAWEI De…

基于Java的校园论坛管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

【Docker从入门到入土 5】 使用Docker-compose一键部署Wordpress平台

Docker-compose 一、YAML 文件格式及编写注意事项&#xff08;重要&#xff09;1.1 简介1.2 yaml语法特性1.3 yaml文件格式1.4 json格式简介 二、Docker-compose2.1 简介2.2 docker-compose的三大概念2.3 docker-compose配置模板文件常用的字段2.4 docker-compose 常用命令 三、…

Java游戏修炼手册:2023 最新学习线路图

前言 有没有一种令人兴奋的学习方法&#xff1f;当然有&#xff01;绝对有&#xff01;而且我要告诉你&#xff0c;学习的快乐可以媲美游戏的刺激。 小学时代&#xff0c;我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学&#xff0c;我总是迫不及待地打开电脑&a…

【C刷题】day6

一、选择题 1、以下叙述中正确的是&#xff08; &#xff09; A: 只能在循环体内和switch语句体内使用break语句 B: 当break出现在循环体中的switch语句体内时&#xff0c;其作用是跳出该switch语句体&#xff0c;并中止循环体的执行 C: continue语句的作用是&#xff1a;在…

党建展馆vr仿真解说员具有高质量的表现力和互动性

随着虚拟数字人应用渐成趋势&#xff0c;以虚拟数字人为核心的营销远比其他更能加速品牌年轻化进程和认识&#xff0c;助力企业在激烈的市场竞争中脱颖而出&#xff0c;那么企业虚拟IP代言人解决了哪些痛点? 解决品牌与代言人之间的风险问题 传统代言人在代言品牌时&#xff0…

使用SecScanC2构建P2P去中心化网络实现反溯源

个人博客: xzajyjs.cn 前言 这款工具是为了帮助安全研究人员在渗透测试过程中防止扫描被封禁、保护自己免溯源的一种新思路。其利用到了区块链中的p2p点对点去中心化技术构建以来构建代理池。 工具链接&#xff1a;https://github.com/xzajyjs/SecScanC2 实验过程 该工具分为…

前端跨域相关

注&#xff1a;前端配置跨域后服务器端&#xff08;Nginx&#xff09;也需要配置&#xff0c;否则接口无法访问 vue跨域 配置文件 /vue.config.js devServer: { port: 7100, proxy: { /api: { target: http://域名, changeOrigin: true, logLevel: debug, pathRewrite: { ^/…

提升MODBUS-RTU通信数据刷新速度的常用方法

SMART PLC的MODBUS-RTU通信请参考下面文章链接: 【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客MODBUS通讯非常简单、应用也非常广泛,有些老生常谈的问题,这里不再赘述,感兴趣的可以参看我的其它博文:SMART200PLC MODBUS通讯专题_RXXW…

unity 一键替换 UI上所有字体,批量替换字体(包括:Text和Text (TMP))

前言&#xff1a;在开发中会遇到这种情况&#xff0c;开发完了&#xff0c;发现UI字体没有替换&#xff0c;特别是需要发布到WebGL端的同学&#xff0c;突然发现无法显示汉字了。下面一个非常方便的方法完美解决。 1.解压出来的脚本放在Edit文件下&#xff0c;没有的创建一个 2…

AI问诊逐渐取代医生是不是伪命题?实测国内外医疗专用大模型

随着贫富差距和人口老龄化的进程加速&#xff0c;以及区域医疗资源的不均衡&#xff0c;医疗成了最让人民群众头疼的事情。虽然互联网和云计算的普及&#xff0c;一定程度上的缓解了这些矛盾。例如&#xff1a;人们可以通过遇到简单的医疗问题的时候&#xff0c;可以去搜索引擎…

使用canvas做了一个最简单的网页版画板,5分钟学会

画板实现的效果&#xff1a;可以切换画笔的粗细&#xff0c;颜色&#xff0c;还可以使用橡皮擦&#xff0c;还可以清除画布&#xff0c;然后将画的内容保存下载成一张图片&#xff1a; 具体用到的canvas功能有&#xff1a;画笔的粗细调整lineWidth&#xff0c;开始一个新的画笔…

postman接收后端返回的文件流并自动下载

不要点send&#xff0c;点send and download&#xff0c;postman接受完文件流会弹出文件保存框让你选择保存路径

Unity Spine 指定导入新Spine动画的默认材质

指定导入新Spine动画的默认材质 找到Spine的Editor导入配置如何修改方法一: 你可以通过脚本 去修改Assets/Editor/SpineSettings.asset文件方法二&#xff1a;通过面板手动设置 找到Spine的Editor导入配置 通常在 Assets/Editor/SpineSettings.asset 配置文件对应着 Edit/Prefe…

从“特种兵游”到Citywalk,年轻人的下一个旅游热点会在哪?

2023年&#xff0c;国内游在逐步放开&#xff0c;境外旅游目的地名单也逐步“扩容”&#xff0c;生活的轨迹在回正&#xff0c;越来越多人重启旅行&#xff0c;感受生活。于此同时&#xff0c;在短短几个月内&#xff0c;寺庙游、citywalk、淄博烧烤、特种兵旅行各种与旅游相关…

docker部署前后端分离springboot+vue项目

前置知识 虚拟网桥 docker容器需要在同一个网段才能通信&#xff0c;当启动一个容器时会自动连接一个docker中默认网桥段但此默认网桥段非本容器固定&#xff0c;当下次容器启动分配的ip会变&#xff0c;并且不可用名称直接访问。 自定义网段将需要互通的容器放入&#xff0c…

Python容器和可迭代对象

在刚开始学Python的时候&#xff0c;是不是经常会听到大佬们在讲容器、可迭代对象、迭代器、生成器、列表/集合/字典推导式等等众多概念&#xff0c;其实这不是大佬们没事就搁那扯专业术语来装B&#xff0c;而是这些东西都得要明白的&#xff0c;光知道字符串、列表等基础还是不…

业务出海、高效传输、动态加速,尽在云栖大会「CDN与边缘计算」专场

2023杭州云栖大会&#xff0c;即将热力来袭。 一场云计算盛会&#xff0c;500前沿话题&#xff0c;3000科技展品&#xff0c;与阿里云一起&#xff0c;共赴72小时的Tech沉浸之旅。 今日&#xff0c;「CDN与边缘计算」Tech专场&#xff0c;重磅议题抢先知晓&#xff01; 01 「…