当前位置: 首页 > news >正文

个人网站制作 Part 13 添加搜索功能[Elasticsearch] | Web开发项目

文章目录

  • 👩‍💻 基础Web开发练手项目系列:个人网站制作
    • 🚀 添加搜索功能
      • 🔨使用Elasticsearch
        • 🔧步骤 1: 安装Elasticsearch
        • 🔧步骤 2: 配置Elasticsearch
        • 🔧步骤 3: 创建索引
      • 🔨使用Vue.js
        • 🔧步骤 4: 创建搜索表单
        • 🔧步骤 5: 创建搜索路由
    • 🚀 预览与保存
    • 🚀 下一步计划


👩‍💻 基础Web开发练手项目系列:个人网站制作

欢迎回到基础Web开发练手项目系列!

在前几篇博文中,我们已经创建了个人网站的基本结构、样式、导航栏、项目展示、联系信息、表单交互、动画效果、页面滚动效果、响应式设计、性能优化、页面动画、用户认证、数据库集成、电子邮件通知、社交媒体集成、博客功能、用户评论功能、用户权限管理和文件上传功能。

在本篇中,我们将学习如何添加搜索功能,使你的网站更加易用。

在这里插入图片描述

🚀 添加搜索功能

🔨使用Elasticsearch

🔧步骤 1: 安装Elasticsearch

首先,确保你的系统上安装了Elasticsearch。你可以在Elasticsearch官方网站找到安装指南。

🔧步骤 2: 配置Elasticsearch

server.js 文件中配置Elasticsearch连接:

const { Client } = require('@elastic/elasticsearch');
const elasticClient = new Client({ node: 'http://localhost:9200' });
🔧步骤 3: 创建索引
// 创建Elasticsearch索引
app.post('/create-index', async (req, res) => {try {const indexName = 'projects'; // 索引名称const createIndexResponse = await elasticClient.indices.create({index: indexName});res.json({ message: `索引 '${indexName}' 创建成功` });} catch (error) {res.status(500).json({ message: error.message });}
});

🔨使用Vue.js

🔧步骤 4: 创建搜索表单

index.html 文件中创建搜索表单:

<div id="app"><h2>项目搜索</h2><input v-model="searchTerm" placeholder="输入关键词"><button @click="searchProjects">搜索</button><ul v-if="searchResults.length > 0"><li v-for="result in searchResults" :key="result._id">{{ result.title }} - {{ result.description }}</li></ul><p v-else>没有匹配的项目</p>
</div>

script.js 文件中添加Vue实例中的方法:

const app = new Vue({el: '#app',data: {searchTerm: '',searchResults: []},methods: {searchProjects() {fetch(`/search?term=${this.searchTerm}`).then(response => response.json()).then(data => this.searchResults = data).catch(error => console.error('搜索失败:', error));}}
});
🔧步骤 5: 创建搜索路由

server.js 文件中创建搜索路由:

// 执行Elasticsearch搜索
app.get('/search', async (req, res) => {const { term } = req.query;try {const searchResponse = await elasticClient.search({index: 'projects', // 你的Elasticsearch索引名称body: {query: {match: {title: term}}}});const results = searchResponse.body.hits.hits.map(hit => hit._source);res.json(results);} catch (error) {res.status(500).json({ message: error.message });}
});

🚀 预览与保存

确保保存所有文件并在浏览器中预览你的网站。你现在应该看到一个拥有搜索功能的更加易用的个人网站了!

🚀 下一步计划

在下一篇文章中,我们将学习如何添加网站分析工具,使你能够更好地了解访客行为。记得继续关注本系列,为你的网站增添更多强大的功能!

通过这个项目,你已经学到了Web开发中许多重要的基础知识,并通过添加搜索功能使你的网站更加易用。祝你编码愉快,不断提升技能!

http://www.lryc.cn/news/321439.html

相关文章:

  • Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
  • vue3 + vite 实现一个动态路由加载功能
  • 【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC 2024)
  • 若依jar包运行脚本,从零到一:用Bash脚本实现JAR应用的启动、停止与监控
  • Unix运维_FreeBSD-13.1临时环境变量设置(bin和include以及lib)
  • Apache Dolphinscheduler - 无需重启 Master-Server 停止疯狂刷日志解决方案
  • 竞争优势:大型语言模型 (LLM) 如何重新定义业务策略
  • Spring AOP和AspectJ AOP区别
  • FREERTOS信号量详解
  • 每天学习一个Linux命令之vim
  • linux环境部署
  • 上位机图像处理和嵌入式模块部署(qmacvisual图像预处理)
  • C语言内存函数详解
  • 详解Redis的持久化RDB和AOF
  • 详细分析Js中的Promise.all基本知识(附Demo)
  • const,static深度总结——c++穿透式分析
  • 快速搭建一个一元二次方程flask应用
  • O2OA红头文件流转与O2OA版式公文编辑器基本使用
  • 软件测试:C++ Google Test单元测试框架GTest
  • 大数据面试题 —— HBase
  • SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
  • SpringMVC的执行原理
  • Qt + HTTP 线程交互类封装
  • GitHub Copilot+ESP开发实战-串口
  • C# 使用ffmpeg将图片保存为mp4视频
  • Java安全技术及代码审计技巧
  • C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境
  • [游戏开发][Unity] 导出Xcode工程,完成调试与发布
  • JSONP 实现跨域请求案例
  • 2024年智慧城市、人文发展与区域经济国际会议(ICSCCDRE 2024)