elasticsearch知识库

这篇具有很好参考价值的文章主要介绍了elasticsearch知识库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

crud

// 新增文档
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
IndexRequest request = new IndexRequest("index");
request.id("1"); // 指定文档id
String jsonString = "{" +
        "\"name\":\"John\"," +
        "\"age\":30," +
        "\"city\":\"New York\"" +
        "}";
request.source(jsonString, XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println(response);
client.close();

// 获取文档
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
GetRequest getRequest = new GetRequest("index", "1");
GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
String sourceAsString = getResponse.getSourceAsString();
System.out.println(sourceAsString);
client.close();

// 更新文档
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
UpdateRequest request = new UpdateRequest("index", "1");
String jsonString = "{" +
        "\"name\":\"John Doe\"," +
        "\"age\":35," +
        "\"city\":\"Los Angeles\"" +
        "}";
request.doc(jsonString, XContentType.JSON);
UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
System.out.println(response);
client.close();

// 删除文档
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
DeleteRequest request = new DeleteRequest("index", "1");
DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
System.out.println(response);
client.close();

es查询缓存

es查询缓存

索引路由

Elasticsearch的路由(Routing)特性
在Elasticsearch中,一个索引被分为多个分片,每个分片包含了部分索引数据。当我们进行查询时,Elasticsearch会将查询请求发送到每个分片上执行查询操作,然后将结果合并返回给客户端。
而路由查询是一种特殊的查询方式,它允许我们在查询时指定一个路由键来确定查询应该在哪个分片上执行。这样,查询就只会在该路由键所对应的分片上执行,从而避免了在所有分片上执行查询的开销。
举个例子,假设我们有一个名为“my_index”的索引,它被分为3个分片,每个分片的路由键分别为0、1、2。我们想要查询该索引中“title”字段包含“elasticsearch”关键字的文档,这时我们可以使用路由查询来提高查询效率。
如果我们不使用路由查询,查询请求会被发送到所有3个分片上,每个分片都会执行查询操作,并将结果返回给客户端。这样就会产生大量的网络和计算开销。
而如果我们使用路由查询,我们可以在查询时指定一个路由键,如“1”,这样查询请求就只会被发送到路由键为1的分片上执行查询操作,其他分片则不会参与查询。这样就可以减少查询的开销,提高查询效率。

路由查询
路由查询是指在查询时指定特定的路由键,使得查询只在指定路由键所在的分片上执行。这种查询方式可以提高查询的效率,特别是在分布式环境下,因为查询只会在一个分片上执行,避免了在所有分片上执行查询的开销。
使用路由查询需要在查询时指定路由键,例如:

// 设置routing,加速搜索,一般使用用户id类似的字段填充
//	indexRequest.routing(String.valueOf(i));

GET /my_index/my_type/_search?routing=key_value
{
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  }
}

无路由查询
无路由查询是指在查询时不指定路由键,查询会在所有分片上执行。这种查询方式适用于单个分片的数据量不大的情况下,因为查询会在所有分片上执行,可能会增加查询的开销。
使用无路由查询不需要指定路由键,例如:

GET /my_index/my_type/_search
{
  "query": {
    "match": {
      "title": "elasticsearch"
    }
  }
}

索引ID

Elasticsearch中的每个文档都有一个唯一的ID,这个ID是由Elasticsearch自动生成的,也可以手动指定。Elasticsearch的索引ID有以下作用:

唯一标识文档
文档的ID是文档在索引中的唯一标识符,它可以用于对文档进行查找、更新、删除等操作。如果文档没有指定ID,则Elasticsearch会自动生成一个唯一的ID。

索引性能优化
Elasticsearch通过ID来分配文档到不同的分片中,并且在分片之间分配副本。如果文档ID是随机生成的,则导致文档分布不均匀,从而导致性能下降。因此,最好为文档指定一个有序的ID,如时间戳或自增数字等,这样可以让文档分布更均匀,提高索引的性能。

避免重复插入
Elasticsearch需要文档ID来避免在插入文档时重复插入。如果插入的文档ID已经存在,则Elasticsearch会将新文档覆盖已有文档,而不是插入新文档。因此,为文档指定一个唯一的ID可以避免重复插入。
总之,索引ID在Elasticsearch中有着非常重要的作用,它不仅仅是文档的唯一标识符,还可以对索引性能进行优化,并且可以避免文档的重复插入。因此,在实际使用中,我们应该根据具体需求来选择是否手动指定文档ID。文章来源地址https://www.toymoban.com/news/detail-407813.html

到了这里,关于elasticsearch知识库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【LangChain学习】基于PDF文档构建问答知识库(二)创建项目

    这里我们使用到 fastapi 作为项目的web框架,它是一个快速(高性能)的 web 框架,上手简单。 我们在IDE中,左侧选择 FastAPI ,右侧选择创建一个新的虚拟环境。  创建成功,会有一个main.py,这是项目的入口文件。  我们运行一下看看有没有报错,没问题的话,那么我们整合

    2024年02月13日
    浏览(64)
  • 基于LangChain+LLM的本地知识库问答:从企业单文档问答到批量文档问答

    过去半年,随着ChatGPT的火爆,直接带火了整个LLM这个方向,然LLM毕竟更多是基于过去的经验数据预训练而来,没法获取最新的知识,以及各企业私有的知识 为了获取最新的知识,ChatGPT plus版集成了bing搜索的功能,有的模型则会调用一个定位于 “链接各种AI模型、工具”的

    2024年02月07日
    浏览(58)
  • 一款私有化部署的企业级在线文档和知识库

    项目介绍 基础说明: 无忧企业文档是JVS体系下的一款企业协同在线文档,主要服务客群为企业用户,解决企业内部文档编辑、知识沉淀、知识协同等痛点。 项目主要采用Java开发,基础框架采用JVS(spring cloud+Vue) 适用场景: 适用于企业、团队,提供在线笔记、知识沉淀、在

    2024年02月10日
    浏览(47)
  • 【elasticsearch实战】知识库文件系统检索工具FSCrawler

    最近有一个需求需要建设一个知识库文档检索系统,这些知识库物料附件的文档居多,有较多文档格式如:PDF, Open Office, MS Office等,需要将这些格式的文件转化成文本格式,写入elasticsearch 的全文检索索引,方便搜索。 我这里介绍一种工具不考虑文件原来格式,但能方便将转

    2024年02月22日
    浏览(46)
  • 【高级RAG技巧】在大模型知识库问答中增强文档分割与表格提取

    文档分割是一项具有挑战性的任务,它是任何知识库问答系统的基础。高质量的文档分割结果对于显著提升问答效果至关重要,但是目前大多数开源库的处理能力有限。 这些开源的库或者方法缺点大致可以罗列如下: 只能处理文本,无法提取表格中的内容 缺乏有效的分割策

    2024年04月22日
    浏览(38)
  • 使用 ElasticSearch 作为知识库,存储向量及相似性搜索

    在当今大数据时代,快速有效地搜索和分析海量数据成为了许多企业和组织的重要需求。 Elasticsearch 作为一款功能强大的分布式搜索和分析引擎,为我们提供了一种优秀的解决方案。除了传统的文本搜索, Elasticsearch 还引入了向量存储的概念,以实现更精确、更高效的相似性

    2024年02月10日
    浏览(48)
  • 基于ChatGPT的文档知识库客服系统-支持上传网址/文本/docx等数据

    现在,很多公司都有自己的内容知识库,会产生大量的碎片话的内部知识,但是这样内部知识难以整合搜索。 我开发的文档知识库客服系统 gofly.v1kf.com ,可以应用于企业内部知识库管理,用户可以使用自然语言提问,让ChatGPT自动归纳总结企业知识信息,帮助员工快速获取所

    2024年02月02日
    浏览(51)
  • 使用 ElasticSearch 作为知识库,存储向量及相似性搜索_elasticsearch cosinesimilarity(1)

    下面基于上篇文章使用到的 Chinese-medical-dialogue-data 中文医疗对话数据作为知识内容进行实验。 本篇实验使用 ES 版本为: 7.14.0 二、Chinese-medical-dialogue-data 数据集 GitHub 地址如下: https://github.com/Toyhom/Chinese-medical-dialogue-data 数据分了 6 个科目类型: 数据格式如下所示: 其中

    2024年04月11日
    浏览(47)
  • 开源大模型ChatGLM2-6B 2. 跟着LangChain参考文档搭建LLM+知识库问答系统

    租用了1台GPU服务器,系统 ubuntu20,Tesla V100-16GB (GPU服务器已经关机结束租赁了) SSH地址:* 端口:17520 SSH账户:root 密码:Jaere7pa 内网: 3389 , 外网:17518 VNC地址:* 端口:17519 VNC用户名:root 密码:Jaere7pa 硬件需求,ChatGLM-6B和ChatGLM2-6B相当。 量化等级    最低 GPU 显存 F

    2024年02月03日
    浏览(56)
  • 【LangChain学习】基于PDF文档构建问答知识库(三)实战整合 LangChain、OpenAI、FAISS等

    接下来,我们开始在web框架上整合 LangChain、OpenAI、FAISS等。 因为项目是基于PDF文档的,所以需要一些操作PDF的库,我们这边使用的是PyPDF2 传入 pdf 文件路径,返回 pdf 文档的文本内容。 首先我们需要将第一步拿到的本文内容拆分,我们使用的是 RecursiveCharacterTextSplitter ,默认

    2024年02月13日
    浏览(73)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包