我相信我能 發表於 2023-10-24 16:12:00

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

<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
                  </svg>
                  <p></p>
<div class="toc">
<h4>文章目录</h4>
<ul><li><ul><li>什么是Elasticsearch</li><li>安装Elasticsearch</li><li><ul><li>索引</li><li>文档</li><li>节点</li><li>分片</li></ul>
   </li><li>使用Elasticsearch进行全文搜索</li><li><ul><li>连接到Elasticsearch</li><li>创建索引和插入数据</li><li>创建全文搜索页面</li><li>测试全文搜索</li></ul>
   </li><li>结语</li></ul>
</li></ul>
</div>
<br>
<img src="https://img-blog.csdnimg.cn/579a429daf314744b995f37351b46548.gif#pic_center">
<p></p>
<blockquote>
<p>🎉欢迎来到Java学习路线专栏~Elasticsearch快速入门及结合Next.js案例使用</p>
<hr>
<ul><li>☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹</li><li>✨博客主页:IT·陈寒的博客</li><li>🎈该系列文章专栏:Java学习路线</li><li>📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习</li><li>🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏</li><li>📜 欢迎大家关注! ❤️</li></ul>
</blockquote>
<hr>
<p>Elasticsearch是一个强大的开源搜索和分析引擎,它可以用于存储、搜索和分析大规模的数据。本文将带您快速入门Elasticsearch,并演示如何在Next.js应用程序中使用Elasticsearch进行全文搜索。<br> <img src="https://img-blog.csdnimg.cn/d21a838e61a54f91874590da3708d3b8.png#pic_center"></p>
<h3>什么是Elasticsearch</h3>
<p>Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,它提供了强大的全文搜索能力。它广泛用于构建实时搜索引擎、日志和事件数据分析、安全信息和指标分析等应用。Elasticsearch的主要特点包括:</p>
<ul><li>分布式:Elasticsearch可以轻松扩展到数百台服务器,支持大规模数据存储和检索。</li><li>实时性:它能够以毫秒级的速度进行数据索引和搜索,适用于实时应用程序。</li><li>多数据类型:支持结构化数据、半结构化数据和无结构数据的索引和搜索。</li><li>多种检索策略:提供全文检索、地理空间搜索、过滤、聚合等多种检索策略。</li></ul>
<h3>安装Elasticsearch</h3>
<p>要开始使用Elasticsearch,首先需要安装它。您可以从Elasticsearch官方网站下载适用于您操作系统的安装包,并按照官方文档进行安装。安装完成后,您可以启动Elasticsearch服务。在大多数情况下,您只需执行以下命令:<code>bash./bin/elasticsearch</code>这将启动Elasticsearch服务并监听默认端口9200。## Elasticsearch基本概念在使用Elasticsearch之前,了解一些基本概念是很重要的。</p>
<h4>索引</h4>
<p>Elasticsearch中的数据存储单元称为“索引”。每个索引可以包含一个或多个类型的文档。</p>
<h4>文档</h4>
<p>文档是Elasticsearch中的基本数据单元,它以JSON格式表示。每个文档都属于一个类型,并存储在一个索引中。文档包含字段,这些字段可以是文本、数字、日期等各种数据类型。</p>
<h4>节点</h4>
<p>Elasticsearch集群由一个或多个节点组成。每个节点是集群的一部分,它可以存储数据、参与搜索和索引操作,并与其他节点通信以协调工作。</p>
<h4>分片</h4>
<p>Elasticsearch将索引划分为多个分片,每个分片是一个独立的Lucene索引。分片使数据能够分布在多个节点上,以提高性能和可伸缩性。</p>
<p><img src="https://img-blog.csdnimg.cn/5911267d679a443abf4638e217639151.png#pic_center"></p>
<h3>使用Elasticsearch进行全文搜索</h3>
<p>下面,我们将演示如何使用Elasticsearch进行全文搜索。我们将创建一个Next.js应用程序,该应用程序允许用户在文章库中执行全文搜索。首先,确保您已安装Node.js和npm。然后,创建一个名为<code>elasticsearch-nextjs</code>的新目录,并在其中初始化一个新的Next.js应用程序:<code>bashnpx create-next-app elasticsearch-nextjs</code>进入应用程序目录并安装必要的依赖项:<code>bashcd elasticsearch-nextjsnpm install @elastic/elasticsearch next-compose-plugins</code>我们使用<code>@elastic/elasticsearch</code>库来与Elasticsearch进行通信,以及<code>next-compose-plugins</code>库来轻松管理插件。</p>
<h4>连接到Elasticsearch</h4>
<p>首先,我们需要连接到Elasticsearch集群。在应用程序的根目录中创建一个名为<code>elasticsearch.js</code>的文件,并添加以下代码:<code>javascriptimport { Client } from '@elastic/elasticsearch';const esClient = new Client({ node: 'http://localhost:9200' });export default esClient;</code>这将创建一个Elasticsearch客户端并连接到默认的Elasticsearch节点。确保Elasticsearch服务正在运行并在端口9200上监听。</p>
<h4>创建索引和插入数据</h4>
<p>接下来,我们将创建一个Elasticsearch索引,用于存储文章数据。在<code>elasticsearch.js</code>文件的末尾添加以下代码:<code>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) =&gt; [ { index: { _index: 'articles' } }, doc, ]); await esClient.bulk({ refresh: true, body });}export { createIndex, insertSampleData };</code>在上面的代码中,我们创建了一个名为<code>articles</code>的索引,并定义了两个字段:<code>title</code>和<code>content</code>。然后,我们插入了一些示例文章数据。</p>
<h4>创建全文搜索页面</h4>
<p>在Next.js应用程序中,我们可以创建一个全文搜索页面,允许用户在文章库中执行搜索操作。在<code>pages</code>目录下创建一个名为<code>search.js</code>的文件,并添加以下代码:<br> <code>javascriptimport { useEffect, useState } from 'react';import esClient from '../elasticsearch';function Search() { const = useState(''); const = useState([]); useEffect(() =&gt; { if (searchQuery) { esClient .search({ index: 'articles', body: { query: { match: { content: searchQuery, }, }, }, }) .then((response) =&gt; { setResults(response.body.hits.hits); }); } else { setResults([]); } }, ); return ( &lt;div&gt; &lt;h1&gt;Full-Text Search&lt;/h1&gt; &lt;input type="text" value={searchQuery} onChange={(e) =&gt; setSearchQuery(e.target.value)} placeholder="Search articles..." /&gt; &lt;ul&gt; {results.map((result) =&gt; ( &lt;li key={result._id}&gt; &lt;h2&gt;{result._source.title}&lt;/h2&gt; &lt;p&gt;{result._source.content}&lt;/p&gt; &lt;/li&gt; ))} &lt;/ul&gt; &lt;/div&gt; );}export default Search;</code><br> 在上面的代码中,我们创建了一个名为<code>Search</code>的React组件,它允许用户输入搜索查询,并在Elasticsearch中执行全文搜索。搜索结果将显示在页面上。</p>
<h4>测试全文搜索</h4>
<p>运行Next.js应用程序:<code>bashnpm run dev</code>现在,您可以在浏览器中访<code>http://localhost:3000/search</code>,在搜索框中输入关键词,应用程序将向Elasticsearch发送搜索请求并显示结果。<br> <img src="https://img-blog.csdnimg.cn/4e7f4ae939bd4f529b0ba25f8323a6b6.png#pic_center"></p>
<h3>结语</h3>
<p>Elasticsearch是一个强大的全文搜索引擎,可以用于各种应用程序,包括实时搜索引擎、日志分析、指标分析等。本文介绍了Elasticsearch的基本概念和快速入门指南,并演示了如何在Next.js应用程序中使用Elasticsearch进行全文搜索。希望这篇文章对您有所帮助,您现在可以开始使用Elasticsearch来增强您的应用程序的搜索功能。如果您想深入了解Elasticsearch,可以查阅Elasticsearch官方文档。</p>
<hr>
<blockquote>
<p>🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏<br> 📜您可能感兴趣的内容:</p>
<ul><li>【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)</li><li>【Java学习路线】2023年完整版Java学习路线图</li><li>【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么</li><li>【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统</li><li>【数据结构学习】从零起步:学习数据结构的完整路径</li></ul>
<blockquote>
<p><img src="https://img-blog.csdnimg.cn/d7565cfc032647bfb69e7971731a06a2.gif#pic_center"></p>
</blockquote>
</blockquote><br><br>
来源:https://www.cnblogs.com/ithan/p/17920962.html
頁: [1]
查看完整版本: Elasticsearch快速入门及结合Next.js案例使用