在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
「推荐专栏」

java一站式服务
React从入门到精通
前端炫酷代码分享
★ 从0到英雄,vue成神之路★
uniapp-从构建到提升
从0到英雄,vue成神之路
解决算法,一个专栏就够了
架构咱们从0说
★ 数据流通的精妙之道★
★后端进阶之路★

请添加图片描述

文章目录

  • 前言
  • 索引管理
    • 创建索引
      • 1. 使用Java API创建索引
      • 2. 使用CURL命令创建索引
    • 更新索引
      • 1. 使用Java API更新索引设置
      • 2. 使用CURL命令更新索引设置
    • 删除索引
      • 1. 使用Java API删除索引
      • 2. 使用CURL命令删除索引
    • 映射字段类型和分析器
    • 结论
  • 数据上传和查询
    • 将数据上传到Elasticsearch
      • 1. 使用Java API上传数据
      • 2. 使用CURL命令上传数据
    • 搜索和过滤数据
      • 1. 使用Java API搜索和过滤数据
      • 2. 使用CURL命令搜索和过滤数据
    • 结论

在这里插入图片描述

索引管理

索引是Elasticsearch中最核心的概念之一。它是一种类似于数据库中表的数据结构,用于存储和搜索文档。本文将介绍如何创建、更新、删除和维护Elasticsearch索引,并学习如何映射字段类型和分析器。

创建索引

1. 使用Java API创建索引

可以使用Java API创建一个新的索引。以下是创建名为my_index的索引的代码示例:

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));CreateIndexRequest request = new CreateIndexRequest("my_index");
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

以上代码使用RestHighLevelClient对象创建一个名为my_index的索引。

2. 使用CURL命令创建索引

也可以通过CURL命令直接在Elasticsearch中创建索引。以下是使用CURL命令创建名为my_index的索引的示例:

curl -XPUT 'localhost:9200/my_index?pretty'

更新索引

1. 使用Java API更新索引设置

可以使用Java API更新现有索引的设置。以下是将名为my_index的索引的副本数从1更改为2的代码示例:

UpdateSettingsRequest request = new UpdateSettingsRequest("my_index");
request.settings(Settings.builder().put("index.number_of_replicas", 2));
AcknowledgedResponse response = client.indices().putSettings(request, RequestOptions.DEFAULT);

以上代码使用UpdateSettingsRequest对象将my_index索引的副本数更改为2。

2. 使用CURL命令更新索引设置

可以使用CURL命令更新现有索引的设置。以下是将名为my_index的索引的副本数从1更改为2的示例:

curl -XPUT 'localhost:9200/my_index/_settings?pretty' -H 'Content-Type: application/json' -d'
{"index" : {"number_of_replicas" : 2}
}
'

删除索引

1. 使用Java API删除索引

可以使用Java API删除现有索引。以下是删除名为my_index的索引的代码示例:

DeleteIndexRequest request = new DeleteIndexRequest("my_index");
AcknowledgeResponse response = client.indices().delete(request, RequestOptions.DEFAULT);

以上代码使用DeleteIndexRequest对象删除名为my_index的索引。

2. 使用CURL命令删除索引

可以使用CURL命令删除现有索引。以下是删除名为my_index的索引的示例:

curl -XDELETE 'localhost:9200/my_index?pretty'

映射字段类型和分析器

在创建索引时,需要映射字段类型和分析器。字段类型定义了字段值的类型,例如字符串、数字和日期等。分析器定义了将文本转换为词项的规则。以下是创建一个包含标题和内容字段的索引,并将这两个字段映射为text类型的示例:

CreateIndexRequest request = new CreateIndexRequest("my_index");
request.mapping("properties", "title", "type=text","analyzer=standard","fields=keyword","content", "type=text","analyzer=english");
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

以上代码使用CreateIndexRequest对象创建名为my_index的索引,并将其映射为包含title和content字段的text类型。

结论

本文介绍了如何创建、更新和删除Elasticsearch索引,以及如何映射字段类型和分析器。在创建索引时,需要考虑字段类型和分析器,以便提高搜索效率。可以使用Java API或CURL命令来管理Elasticsearch索引。

数据上传和查询

将数据上传到Elasticsearch索引中并执行各种查询是使用Elasticsearch的核心功能之一。本文将介绍如何将数据上传到Elasticsearch索引中,并使用各种查询来检索和过滤数据。

将数据上传到Elasticsearch

1. 使用Java API上传数据

可以使用Java API将数据上传到Elasticsearch索引中。以下是使用RestHighLevelClient对象将一条文档上传到名为my_index的索引中的代码示例:

IndexRequest request = new IndexRequest("my_index");
request.id("1");
String jsonString = "{" +"\"name\":\"John\"," +"\"age\":30," +"\"city\":\"New York\"" +"}";
request.source(jsonString, XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);

以上代码使用IndexRequest对象将一个名为John、年龄为30岁、来自纽约的文档上传到名为my_index的索引中。

2. 使用CURL命令上传数据

也可以使用CURL命令将数据上传到Elasticsearch索引中。以下是将一条名为John、年龄为30岁、来自纽约的文档上传到名为my_index的索引中的示例:

curl -XPOST 'localhost:9200/my_index/_doc/1?pretty' -H 'Content-Type: application/json' -d'
{"name": "John","age": 30,"city": "New York"
}
'

搜索和过滤数据

1. 使用Java API搜索和过滤数据

可以使用Java API搜索和过滤Elasticsearch索引中的数据。以下是使用RestHighLevelClient对象执行一个简单的match_all查询的代码示例:

SearchRequest request = new SearchRequest("my_index");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery());
request.source(sourceBuilder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);

以上代码使用SearchRequest对象和SearchSourceBuilder对象执行简单的match_all查询,并返回所有文档。

2. 使用CURL命令搜索和过滤数据

也可以使用CURL命令搜索和过滤Elasticsearch索引中的数据。以下是使用match_all查询检索名为my_index的索引中的所有文档的示例:

curl -XGET 'localhost:9200/my_index/_search?pretty' -H 'Content-Type: application/json' -d'
{"query": {"match_all": {}}
}
'

结论

本文介绍了如何将数据上传到Elasticsearch索引中,并使用各种查询来检索和过滤数据。使用Java API或CURL命令都可以管理Elasticsearch索引,具有灵活性和易用性。在实际应用中,需要根据数据模型和查询需求来选择合适的方式来上传和查询数据。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器建站教程,本文是搭建Discuz论坛,Discuz!是一款通用的社区论坛软件系统,它采用PHP和MySQL组合的基础架构,为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…

JAVA宝典----输入输出流(理解记忆)

目录 一、 Java IO流的实现机制是什么? 二、Java中有几种类型的流? 三、管理文件和目录的类是什么? 四、Java Socket是什么? 五、什么是 JAVA NIO? 六、 什么是Java序列化? (1)序…

连续两年增收不增利,比亚迪电子靠新能源汽车业务再次起飞?

在净利润连续两年下挫之后,比亚迪电子(00285.HK)终于迎来了好消息。 不久前比亚迪电子发布2023年中期盈利预告显示,上半年净利润同比增加115%-146%(2022年上半年的净利润显示6.34亿元)。 这主要受益于大客…

tomcat多实例与动静分离

实验:在一台虚拟机上配置多台tomcat 1.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh source /etc/profile.d/tomcat.sh 2.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/…

山东布谷科技直播平台搭建游戏开发技术分享:数据存储的重要意义

在市场上的热门的直播平台中,有很多小程序为用户提供各种各样的功能,这其中就有很多游戏小程序,当今社会独生子女众多,很多作为独生子女的用户都会去选择一个能够社交互动的APP来填补内心的空虚,而直播平台的实时互动的…

Node.js学习笔记-04

这第九章也是个大重点 九、玩转进程 Node在选型时决定在V8引擎之上构建,也就意味着它的模型与浏览器类似。 本章关于进程的介绍和讨论将会解决如下两个问题: 单进程单线程并非完美,如今CPU基本均是多核的,真正的服务器&#xf…

MySQL 8 group by 报错 this is incompatible with sql_mode=only_full_group_by

文章目录 sql_mode配置ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION 局部修改配置windows修改配置Linux修改配置 sql_mode配置 ONLY_FULL_GROUP_BY 用于控制是否允许对查询结果进…

springboot汽车租赁后台java出租客户管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 springboot汽车租赁后台 系统有1权限:管理…

mysql索引的数据结构(Innodb)

首选要注意,这里的数据结构是存储在硬盘上的数据结构,不是内存中的数据结构,要重点考虑io次数. 一.不适合的数据结构: 1.Hash:不适合进行范围查询和模糊匹配查询.(有些数据库索引会使用Hash,但是只能精准匹配) 2.红黑树:可以范围查询和模糊匹配,但是和硬盘io次数比较多. 二…

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本匹配的方法进行实现:Poin…

【闲侃历史】 唐朝----安史之乱那些事(1)

说到安史之乱,可谓是唐朝最乱的一段时期,据说唐朝当时也就5000多万人,而经历了这一战,人口只剩1000多万人了。著名的杨国忠和杨贵妃也是在这个时候死的。这个系列我们就先来侃侃发起安史之乱的两个人----安禄山和史思明 一. 安禄…

Django的简介安装与配置及两大设计模式

一.Djang的介绍 1.Django是什么 Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。 由于 Python 语言的跨平台性,所以 Django 同样支持 Windows、Linux 和 Mac 系统。 在 Python 语言炽手可热的当下,Django 也迅速的崛起,在…

LeetCode150道面试经典题-- 有效的字母异位词(简单)

1.题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 2.示例 s"adasd" t"daads" 返回true s"addad" t &q…

最小生成树(Kruskal)克鲁斯卡尔算法

算法步骤总共分为两步,由并查集实现 第一步(把所有的边按边长的大小进行排序) 第二步(如果两个点不连通就把两点之间的边加上再把两个点连通) 当放入的边数为点数减去一时就代表已经全部连通 例题一(859. …

[Mongodb 5.0]聚合操作

本文对应Aggregation Operations — MongoDB Manual 正文 此章节主要介绍了Aggregation Pipeline,其实就是将若干个聚合操作放在管道中进行执行,每一个聚合操作的结果作为下一个聚合操作的输入,每个聚合指令被称为一个stage。 在正式开始学…

电压放大器和电荷放大器区别是什么意思

电压放大器和电荷放大器是两种常见的信号放大器。它们的区别主要在于其输入端口所呈现的电路特性不同。 电压放大器的介绍 电压放大器是一种将输入信号的电压增益放大的电路元件,其输入端口呈现高阻抗特性。即在输入端口上,电压放大器所对应的电路模型中…

探索数据之美:初步学习 Python 柱状图绘制

文章目录 一 基础柱状图1.1 创建简单柱状图1.2 反转x和y轴1.3 数值标签在右侧1.4 演示结果 二 基础时间线柱状图2.1 创建时间线2.2 时间线主题设置取值表2.3 演示结果 三 GDP动态柱状图绘制3.1 需求分析3.2 数据文件内容3.3 列表排序方法3.4 参考代码3.5 运行结果 一 基础柱状图…

【Android】MVC,MVP,MVVM三种架构模式的区别

MVC 传统的代码架构模式,仅仅是对代码进行了分层,其中的C代表Controller,控制的意思 将代码划分为数据层,视图层,控制层,三层之间可以任意交互 MVP MVP是在MVC基础上改进而来的一种架构,其中的…

微信开发之一键退出群聊的技术实现

简要描述: 退出群聊 请求URL: http://域名地址/quitChatRoom 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wI…

0基础学C#笔记09:希尔排序法

文章目录 前言一、希尔排序的思想二、使用步骤总结 前言 希尔排序可以说是插入排序的一种变种。无论是插入排序还是冒泡排序,如果数组的最大值刚好是在第一位,要将它挪到正确的位置就需要 n - 1 次移动。也就是说,原数组的一个元素如果距离它…