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

news2024/11/25 8:17:56

前言

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

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.coloradmin.cn/o/849679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MQ百万级数据堆积如何处理

问题分析 如果,如果哈,RabbitMQ或者是kafka,这些消息队列出现大量的数据堆积,乃至是成千上万,我们作为一个开发工程师或者是架构师,我们如何去解决这种突发情况呢?可能大家会想,怎么…

面试题更新之-this指向问题

文章目录 this指向是什么常见情况下 this 的指向怎么修改this的指向 this指向是什么 JavaScript 中的 this 关键字用于引用当前执行代码的对象。它的指向是动态的,根据执行上下文的不同而变化。 常见情况下 this 的指向 全局作用域中的 this: 在全局作…

【游戏客户端】制作你玩我猜Like玩法

【游戏客户端】制作你玩我猜Like玩法 大家好,我是Lampard猿奋~~ “你画我猜”相信大家都不陌生,当初这款小游戏可谓茶余饭后必玩之选,风头一时无二。今天要和大家分享如何实现一个你玩我猜Like的玩法。 我们可以简单的把需求拆成两个个部分&…

图像预处理——CV

目录 1.图像预处理 1.1 图像显示与存储原理 1.2 图像增强的目标 1.3 点运算:基于直方图的对比度增强 1.4 形态学处理 1.5 空间域处理:卷积 1.6 卷积的应用(平滑、边缘检测、锐化等) 1.7 频率域处理:傅里叶变换…

Seata - 入门笔记

1、事务 访问并可能更新数据库中数据库中各种数据线的一个程序执行单元 原子性:事务是一个不可分割的工作单位,一个事务要么都做要么都不做 一致性:必须是使数据库从一个一致性到另一个一致性的状态,中间状态不能被观察到 隔离…

Python爬虫在电商数据挖掘中的应用

作为一名长期扎根在爬虫行业的专业的技术员,我今天要和大家分享一些有关Python爬虫在电商数据挖掘中的应用与案例分析。在如今数字化的时代,电商数据蕴含着丰富的信息,通过使用爬虫技术,我们可以轻松获取电商网站上的产品信息、用…

明年,HarmonyOS不再兼容Android应用!

2023年华为开发者大会,不知道各位老铁们是否观看了,一个震撼的消息就是,首次公开了HarmonyOS NEXT的概念,简而言之就是,这是一款专为开发者打造的预览版操作系统,旨在提供"纯正鸿蒙操作系统"的体…

2023年果粉装机必备软件有哪些?Macbook电脑需要安装什么软件

作为一名从Windows全面切换到Mac的果粉,在一开始的时候确实感到诸多不便,比如文件管理器操作别扭,鼠标移动不够跟手等等。 后来才发现,除了游戏,大多数问题都能用软件来解决。Mac虽然小众,但是用户群体有很…

84. 柱状图中最大的矩形

题目描述 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释:最…

林【2018】

关键字: BST插入叶子结点、ADT结伴操作、队列插入前r-1、哈希函数二次探测法(1,-1,4,-4)、队列元素个数、折半查找失败次数、广义表链表结构、B-树构建、单链表指定位置插入数组元素 一、判断 二、单选 h(49)+1,-1,+4,-4

什么是动态测试?

作为一名测试人员,要对各种测试方法了然于胸,今天这篇文章就来介绍下什么是动态测试。采用动静结合的测试方式,挖掘出程序中存在的问题,以更好地保证测试质量。同时,我也准备了一份软件测试视频教程,放在文…

水壶问题(力扣)数学 JAVA

有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。 如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。 你可以&…

echarts 横向柱状图

<template><div ref"chart" style"height: 100%"></div> </template><script> import * as echarts from "echarts"; var cate ["质量通病1", "质量通病2", "质量通病3", "质…

LeetCode 热题 100 JavaScript--160. 相交链表

/*** Definition for singly-linked list.* function ListNode(val) {* this.val val;* this.next null;* }*//*** param {ListNode} headA* param {ListNode} headB* return {ListNode}*/// 1、暴力解法 var getIntersectionNode function(headA, headB) {var p1 …

大英博物馆将世界历史带入 The Sandbox 元宇宙

又一个知名的、历史领域合作伙伴加入了我们的元宇宙生态系统&#xff01; 大英博物馆选择 The Sandbox 作为其首次进入元宇宙的合作平台。通过这次合作&#xff0c;我们的用户将能够通过全新的沉浸式体验来探索全球历史。 以下是您需要了解的一切&#xff01; 我们正在与大英…

测试工程师如何利用AIGC高效工作?Chat PDF辅助我们写测试用例和脚本

ChatPDF 是一种基于人工智能的工具&#xff0c;用于将 PDF 文档转换为可交互式的聊天式界面。它能够将静态的 PDF 文件转化为动态的聊天对话框&#xff0c;使用户可以通过对话的形式与文档进行交互。 ChatPDF 可以完成以下工作&#xff1a; 1. 将 PDF 文档转换为聊天式界面&am…

H. HEX-A-GONE Trails 2023“钉耙编程”中国大学生算法设计超级联赛(7)hdu7354

Problem - 7354 题目大意&#xff1a;有一棵n个点的树&#xff0c;A和B分别从点x&#xff0c;y开始&#xff0c;每轮可以移动到一个相邻节点&#xff0c;但如果某个节点有人访问过&#xff0c;则两人都不能访问那个节点&#xff0c;先没有点可走的人输&#xff0c;问A有没有必…

pytest之测试用例执行顺序

前言 在unittest框架中&#xff0c;默认按照ACSII码的顺序加载测试用例并执行&#xff0c;顺序为&#xff1a;09、AZ、a~z&#xff0c;测试目录、测试模块、测试类、测试方法/测试函数都按照这个规则来加载测试用例。 而 pytest 中的用例执行顺序与unittest 是不一样的&#…

CTF流量题解http4.pcapng

流量分析 导出http 打开报错 验证文件头&#xff0c;发现是zip。 图常片见里文可件能的包16含进:压制缩头包部,word,pdf JPG FF D8 FF E0/FF D8 FF E1 PNG 89 50 4E 47 GIF 47 49 46 38 ZIP 50 4B 03 04 RAR 52 61 72 21 MP3 49 44 33 0 改后缀 使用工具爆破。 git clone git…

牛客周赛 Round 6

A 游游的数字圈 题目大意 给定一个由数字字符组成的字符串&#xff0c;统计该字符串中出现的圆圈数量。其中数字0、6、9各有一个圆圈&#xff0c;数字8有两个圆圈。 思路分析 遍历字符串中的每个字符&#xff0c;对于每个字符&#xff0c;判断其是0、6、9则加1&#xff0c;是…