使用ES检索PDF等文档的全栈方案之前端demo(end)

这篇具有很好参考价值的文章主要介绍了使用ES检索PDF等文档的全栈方案之前端demo(end)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

通过之前的系列文章,整个ES搜索文件的流程与大的问题已经统统扫除了,既然是全栈流程,是不能缺少前端查询页面的,前端需简单实现一个用户输入查询关键词句,发起搜索,页面以表格形式展示查询的结果,额外可以提供文件的预览或下载操作。

系列可阅读:
1. 实现ES检索pdf等文件内容的插件

2. 基于GitBucket的Hook构建ES检索PDF等文档全栈方案

3. Java实现读取转码写入ES

4. ES文件搜索的细节优化与实现

5. ES解析word内容为空的问题和直接使用Tika解析文档的方案

实现前端demo

前端框架使用vue快速创建,并基于axois进行后端接口的交互,前提是后端的ES数据查询接口要提前创建好并启动。

具体的操作步骤,从安装vue客户端开始到启动服务,如下:

npm install -g @vue/cli
ln -s /opt/local/npm/node-v16.19.1-linux-x64/bin/vue /usr/bin/vue

vue -V
# 创建模板项目~HelloWorld
vue create lauf

cd lauf && ll
# 安装依赖
npm install
npm install axios -g
# 启动服务
npm run serve

使用ES检索PDF等文档的全栈方案之前端demo(end),ES,elasticsearch,pdf,大数据,vue,word

项目结构如上!我们主要修改vim HelloWorld.vue,如果需要调用后端服务请求数据,需在依赖中添加axios库并安装,否则会编译失败。

npm查询依赖有哪些版本:

npm view axios versions

页面效果

使用ES检索PDF等文档的全栈方案之前端demo(end),ES,elasticsearch,pdf,大数据,vue,word

页面可输入关键词点击查询,下方以表格形式返回搜索到的结果,包含标题等信息,以及预览和下载等操作。

ES索引结构与查询语句

#这个是索引的最终mapping结构,设置了多个分片
PUT /docwrite2
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "title": {
        "type": "text",
        "analyzer": "ik_max_word"
      },
      "fileType": {
        "type": "keyword"
      },
      "active": {
        "type": "boolean"
      },
      "upTime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "content": {
        "type": "text",
        "analyzer": "ik_smart"
      }
    }
  }
}

# 这个是一个输入关键词进行查询的DSL语句
GET /docwrite2/_search
{
  "query": {
    "multi_match": {
      "query": "跳板机",
      "fields": [
        "content",
        "title"
      ],
      "analyzer": "ik_smart"
    }
    
  },
  "_source": {
    "excludes": ["content"]
  }
}

索引结构简介

这是一个在Elasticsearch中创建索引(名为"docwrite2")的RESTful API请求,使用PUT方法。该索引具有特定的设置和映射(数据结构定义)。

  1. Settings:

    • "number_of_shards": 3:表示索引将被分成3个分片,这是Elasticsearch水平扩展的基础,可以提高搜索和存储性能。
    • "number_of_replicas": 2:每个主分片会有2个副本分片,用于提供高可用性和容错性,当某个节点失效时,可以从副本分片继续提供服务。
  2. Mappings:

    • "id":类型为"keyword",这意味着它将被当作不可分割的整体进行索引,常用于精确匹配查询。
    • "title":类型为"text",并指定了分析器(analyzer)为"ik_max_word",这通常是一个中文分词器,会对文本内容进行最大粒度的分词处理,便于全文检索。
    • "fileType":同样为"keyword"类型,用于存储文件类型等不需要分词的属性信息。
    • "active":类型为"boolean",用于存储布尔值类型的字段。
    • "upTime":类型为"date",并指定了日期格式为"yyyy-MM-dd HH:mm:ss",用于存储日期时间类型的数据。
    • "content":类型为"text",并指定了分析器为"ik_smart",这也是一个中文分词器,但相比"ik_max_word",它倾向于更智能的最少切分策略,更适合用于较短的文本片段或标题等内容。

查询语句解释

这个Elasticsearch查询语句是用来在名为“docwrite2”的索引中搜索包含关键词“跳板机”的文档,并且在返回结果中排除了“content”字段的内容。以下是详细的解析:

  1. GET /docwrite2/_search: 这是一个针对“docwrite2”索引执行搜索操作的HTTP GET请求。_search端点用于执行搜索查询并返回相关结果。

  2. 请求体中的查询部分:

    • "query": { ... }:这部分定义了搜索的查询条件。

    • "multi_match": { ... }:这是一种复合查询类型,允许在一个或多个指定字段上执行全文本搜索。在这个例子中:

      • "query": "跳板机":表示要查找的关键词是“跳板机”。
      • "fields": ["content", "title"]:指定要在哪些字段上执行搜索,这里包括“content”和“title”两个字段。
      • "analyzer": "ik_smart":指定使用名为“ik_smart”的分析器来分析查询字符串以及索引中的相应字段内容。由于之前在映射中为"text"类型的字段指定了中文分词器,此处选用“ik_smart”分析器来进行智能分词匹配。
  3. 返回结果控制部分:

    • "_source": { "excludes": ["content"] }:这一节控制了返回结果中原始文档 _source 字段的包含或排除规则。在这个案例中,要求在返回的每个匹配文档中排除“content”字段的内容,这意味着即使文档匹配,也不会显示“content”字段的值。

整个查询语句的作用是从索引“docwrite2”的“content”和“title”字段中查找包含词语“跳板机”的文档,并在返回结果时,不显示每个匹配文档的“content”字段内容。文章来源地址https://www.toymoban.com/news/detail-845665.html

到了这里,关于使用ES检索PDF等文档的全栈方案之前端demo(end)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 项目使用 Elasticsearch 对 Word、Pdf 等文档内容的检索

    本文参考自:https://blog.csdn.net/Q54665642ljf/article/details/127701719 本文适用于 elasticsearch 入门小白,还请大佬能指出我的不足(本人其实也是刚学 elasticsearch 没多久) (1)为什么要有文本抽取插件? 对于 word 、 pdf 等文档类型的文件而言,它们文件底层的内容除了纯文本之外,还

    2024年02月16日
    浏览(54)
  • vane 一个适用于前端打工人的全栈框架,nodejs+vue3+typescript

    写这个的初衷是因为每次用node写接口的时候总是需要一些写大一堆的东西, 也有些人把很多接口都放在一个js文件内, 看起来很是杂乱, 后来用到nuxt写的时候, 感觉用文件名来命名接口路径很是方便, 无论是query参数还是params参数,都可以通过文件名来命名, 也可以通过文件夹层级

    2024年02月11日
    浏览(38)
  • 17、全文检索 -- Elasticsearch -- 使用 反应式 RestClient (ReactiveElasticsearchClient)操作 Es 服务器(增、删、查 :索引库和文档)

    Elasticsearch 所提供 RestHighLevelClient 本身提供了 【同步编程】 和 【异步编程】两种模型。 Elasticsearch 官方并未提供反应式的 RestClient : 因此 Spring Data Elasticsearch 额外补充了一个 ReactiveElasticsearchClient,用于提供反应式API支持, ReactiveElasticsearchClient 相当于 RestHighLevelClient 的反应式

    2024年04月28日
    浏览(36)
  • ES+微服务对文档进行全文检索

    打开ES服务 进入es安装目录下F:elasticsearch-7.17.1bin,双击elasticsearch.bat,如图 成功后,如图 2. 打开ES可视化服务 进入安装F:elasticsearch-head-master路径下,执行npm run start 3. 打开浏览器 参考文献:https://blog.csdn.net/mjl1125/article/details/121975950

    2024年02月11日
    浏览(33)
  • ES全文检索pdf、word、txt等文本文件内容

    需求: 用ES对上传文件内容的检索和高亮显示。 之前从事于物联网行业,从多年前了解ES以后没有使用过,本篇文章就是为了记录小白用ES完成工作的过程。 Elasticsearch的介绍、安装和环境这里不过多介绍,网上有很多。 思考: 文本搜索,文本需要上传elasticsearch。支持

    2024年04月11日
    浏览(51)
  • Python全栈安全:构建安全的全栈应用

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Python作为一种多用途的编程语言,已经在全栈应用开发中变得非常流行。全栈应用

    2024年02月02日
    浏览(32)
  • ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索

    Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件,可以轻松地在 Elasticsearch 中建立全文搜索功能,而无需事先转换二进制

    2024年02月05日
    浏览(44)
  • ES解析word内容为空的问题和直接使用Tika解析文档的方案

    在上一篇文章最后,我们虽然跑通了ES文件搜索的全部流程,但是仍然出现了1个大的问题:ES7.3实测无法索引docx和doc文档,content有值但是无法解析到附件成为可读的可搜索的内容,附件内容为空(附件中根本没有content这个字段,并非内容为空)。解决的思路是可以直接使用

    2024年04月10日
    浏览(33)
  • 云原生开发:从容器到微服务的全栈指南

    🎉欢迎来到云计算技术应用专栏~云原生开发:从容器到微服务的全栈指南 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:云计算技术应用 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 云计算技术应用

    2024年02月08日
    浏览(32)
  • YAPi在线接口文档简单案例(结合Vue前端Demo)

    在前后端分离开发中,我们都是基于文档进行开发,那前端人员有时候无法马上拿到后端的数据,该怎么办?我们一般采用mock模拟伪造数据直接进行测试,本篇文章主要介绍YApi在线接口文档的简单使用,并结合Vue的小demo,让你快速了解到前后端分离开发整体流程。 YApi 是高

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包