ES系列二之常见问题解决

news2024/11/29 4:35:55

一 更新ES信息报错

报错信息如下:
Use ElasticsearchException.getFailedDocuments() for detailed messages [{yjZ8D0oB=ElasticsearchException[Elasticsearch exception [type=cluster_block_exception, reason=index [au_report] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]]

分析:看报错信息大概意思就是es的写入操作被阻塞了,索引只能读、删不能修改新增了;我总结了这种错误的解决方案以及步骤,如下:

  • 1、发送请求将read_only_allow_delete属性置成false或者删除;如下:
curl --location --request PUT 'http://127.0.0.1:9200/au_report/_settings' \
--header 'Content-Type: application/json' \
--data-raw '{
"index.blocks.read_only_allow_delete": null
}'

read_only_allow_delete表示es只读和允许删除不能做修改操作,当磁盘空间达到95%时自动为true;

  • 2、如果上述请求成功后仍然报错,那么可以查看es使用磁盘的空间占用情况,调用如下:
    curl --location --request GET 'http://127.0.0.1:9200/_cat/allocation?v'
    下面贴上该请求返回的各项代表的意思:
    • shards:分片数
    • disk.indices:索引index占用的空间大小
    • disk.used:已用磁盘空间
    • disk.avail:可用磁盘空间
    • disk.total:磁盘空间总量
    • disk.percent:磁盘已使用百分比
    • host:节点主机地址
    • ip:节点ip
    • node:节点名称
  • 3、我的情况就是这里发现disk.percent磁盘已使用空间的百分比已经超过98%了,所以我的当务之急是改配置或者删数据;由于我这边的es服务并非自己搭建的,于是登录es主机进行了以下操作
    • 通过jps或者ps -ef | grep elastic查看es的进程ID
    • 通过ll /proc/进程ID/cwd 查看es安装位置
    • 通过查看es的配置文件/elasticsearch-7.6.2/config/elasticsearch.yml的配置发现并未配置es文件的落盘位置,那么默认应该是与当前安装目录在同一个磁盘;
    • 于是通过df -h [指定目录] 查看es安装目录磁盘占用情况,发现果然超过95%了,其实上面通过/_cat/allocation?v请求已经知悉磁盘空间使用情况了,这里只是做一个校验确定
  • 4、由于磁盘空间我这边无法清理,于是找运维同事在有足够磁盘空间的目录下创建data和log文件夹,然后将elasticsearch.yml里的path.data和path.log的值换成新建的data和log目录,然后重启就解决了这个报错

二、命中结果高亮展示

我使用的spring-data-elasticsearch的版本是4.3.4,其实只要在ES系列一之java端API操作;分页查询的测试方法queryPageData()基础上新增HighlightBuilder设置需要高亮的字段然后设置到返回结果去即可,下面贴上查询代码:

@Test
    public void queryPageData(){
        // 此处应是查询参数,这里单元测试没有赋值
        TestQuery query = new TestQuery();
        query.setTextKey("张三");
        PaginationModel<EsTestInfo> res = new PaginationModel<>();
        int currentPage=query.getPageIndex()-1;
        int pageSize = query.getPageSize();
        PageRequest pageRequest = PageRequest.of(currentPage, pageSize);
        BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
        BoolQueryBuilder textKeyBqb = new BoolQueryBuilder();
        if (StringUtils.isNotBlank(query.getTextKey())) {
            /**
             *  由于下面会用到must查询,所以此处用textKeyBqb再封装一个builder出来,否则
             *  和must同时查询此处会出现0匹配也返回结果的情况
             *  如果不想封装textKeyBqb,加上boolQueryBuilder.minimumShouldMatch(1)强制使es
             *  最少满足一个should子句才能返回结果也行
             */
            textKeyBqb.should(QueryBuilders.matchQuery("id", query.getTextKey()))
                    .should(QueryBuilders.matchQuery("name", query.getTextKey()))
                    .should(QueryBuilders.matchQuery("desc", query.getTextKey()));
        }
        if (Objects.nonNull(query.getStartDate()) && Objects.nonNull(query.getEndDate())) {
            RangeQueryBuilder timeRangeQuery = QueryBuilders.rangeQuery("publishDt")
                    .gte(query.getStartDate().getTime())
                    .lte(query.getEndDate().getTime());
            boolQueryBuilder.must(timeRangeQuery);
        }
        if (Objects.nonNull(query.getRptStatus())) {
            boolQueryBuilder.must(QueryBuilders.matchQuery("rptStatus", query.getRptStatus()));
        }
        // 将上面封装的子句加入到主查询条件中
        boolQueryBuilder.must(textKeyBqb);
        log.info("<<<<<<<<<<<<<<<<<<boolQueryBuilder:{}",boolQueryBuilder);
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(boolQueryBuilder).withPageable(pageRequest)
                // 设置需要高亮的字段
                .withHighlightFields(
                        new HighlightBuilder.Field("name")
                        ,new HighlightBuilder.Field("desc"))
                // 设置高亮的html格式
                .withHighlightBuilder(new HighlightBuilder().preTags("<span style='color:red'>").postTags("</span>")).build();
        // 解决es一次只返回10000条数据的问题
        searchQuery.setTrackTotalHits(true);
        SearchHits<EsTestInfo> search = elasticsearchRestTemplate.search(searchQuery, EsTestInfo.class);
        List<EsTestInfo> list = new ArrayList<>();
        for (SearchHit<EsTestInfo> productSearchHit : search) {
            EsTestInfo pro = productSearchHit.getContent();
            //获取高亮的字段集合
            Map<String, List<String>> highlightFields = productSearchHit.getHighlightFields();
            //将高亮的内容填充到pro中
            pro.setName(highlightFields.get("name")==null ? pro.getName():highlightFields.get("name").get(0));
            pro.setDesc(highlightFields.get("desc")==null ? pro.getDesc():highlightFields.get("desc").get(0));
            System.out.println("pro = " + pro);
            list.add(pro);
        }
        res.setList(list);
        res.setTotal(search.getTotalHits());
        res.setPageIndex(query.getPageIndex());
        res.setPageSize(query.getPageSize());
        System.out.println("res = " + res);
    }

C# 折叠 复制 全屏

测试结果如下:

 


这次更新的问题到此结束,后续遇到新的问题会继续补充......

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

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

相关文章

c++ vector的模拟实现以及迭代器失效问题

目录 1.vector的模拟实现 2.迭代器失效问题 3.总结 1.vector的模拟实现 这里&#xff0c;我们使用三个指针来控制vector。 用_start指向头&#xff0c;_finish指向最后一个元素的尾巴&#xff0c;_end指向最大容量。 #include<iostream> #include<cassert>usin…

Spring Cloud Netfix Hystrix(断路器)

一、灾难性雪崩 造成灾难性雪崩效应的原因&#xff0c;可以简单归结为下述三种&#xff1a; 服务提供者&#xff08;Application Service&#xff09;不可用。如&#xff1a;硬件故障、程序BUG、缓存击穿、并发请求量过大等。 重试加大流量。如&#xff1a;用户重试、代码重试…

手记:把代码上传到Gitee等远程仓库的过程记录及常见问题

很久没用git了&#xff0c;指令都有点生疏了&#xff0c;今天上传了一些代码到码云上&#xff0c;先把过程记录下来供使用git的朋友参考。没有用图形化界面&#xff0c;因为只有熟悉指令才能真正的理解领会。 步骤一&#xff1a; 1、安装git&#xff1b;安装后可以使用指令git…

打造一个投资组合管理的金融强化学习环境

原创文章第120篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 今天继续金融强化学习环境。 网上的金融学习环境不少&#xff0c;但都太过于“业余”&#xff0c;或者离像样的投资还差得太远。我一直觉得投资组合应该是必要的&#xff0…

怎么恢复已删除的全部数据,不小心删除的数据怎么恢复,删除的文件还能找回吗

怎么恢复已删除的全部数据&#xff1f;一般来讲&#xff0c;当文件被删除后&#xff0c;都会暂时被放置在回收站的位置&#xff0c;如果我们想找回相应的丢失数据&#xff0c;具体该如何操作呢&#xff1f; 一、当回收站没有被清空 这是最简单的一种恢复误删数据的方法&#…

前端入门--JavaScript篇

JavaScript基础 文章目录JavaScript基础JavaScript是什么JavaScript的使用方式JavaScript的运行过程JS的语法三种语言的注释输入输出JS中的变量JS中基本的数据类型number类型string字符串undefined类型null类型运算符数组数组的创建数组的使用数组新增元素函数对象之前学过了HT…

缓存的设计

文章目录1. 缓存的更新机制1.1 被动更新1.2 主动更新1.2.1 Cache Aside Pattern &#xff08;更新数据库&#xff0c;再删除缓存&#xff09;1.2.2 更新数据库&#xff0c;更新缓存1.2.3 先删除缓存&#xff0c;在更新数据库1.3 Read/Write Through Pattern1.4 Write Behind Ca…

【Linux】权限管理

文章目录一、shell 命令以及运行原理二、Linux的用户权限1、权限概念引入2、用户分类3、用户切换4、用户提权三、Linux 权限管理1、文件访问者的角色划分2、文件类型和访问权限a、文件类型(后缀理解 file 指令讲解)b、文件访问权限四、文件访问权限的更改1、chmod 指令(对拥有…

STM32CubeMX串口通讯

串口的简单介绍 RS-232与TTL 根据通讯使用的电平标准不同&#xff0c;串口通讯可分为 TTL 标准及 RS-232 标准。而STM32的串口是TTL电平标准的。如果需要使用到RS-232则需要一个电平转换芯片。 单工通信、半双工通信和全双工通信 讲到串口&#xff0c;我们还需要具备这些基…

嵌入式分享合集113

一、 模拟输入信号的保护电路问题 四种模拟输入信号的保护电路的实现方法。 近由于工作的需要&#xff0c;涉及到了模拟输入信号的保护电路问题。结合以往的工作实践以及网络文献资料的查找。现在就保护电路作一简单的说明。 电源钳位保护 上述电路存在可靠性的问题。如果输…

JavaScript_DOM

JavaScript_DOM 概述 简单说就是用来操作HTML的方法&#xff0c;详情看官方文档。 对于我们只需要会使用下面的这个Element对象就可以了。 获取 Element对象 HTML 中的 Element 对象可以通过 Document 对象获取&#xff0c;而 Document 对象是通过 window 对象获取。 Doc…

焱融科技为国家重点实验室打造海量高性能存储

中国科学院大气物理研究所大气科学和地球流体力学数值模拟国家重点实验室&#xff08;英文缩写 LASG&#xff09;是国家级重点实验室。LASG 主要研究方向为地球气候系统模式的研发与应用&#xff1b;天气气候动力学理论、气候系统变化规律及其异常发生机制&#xff1b;天气气候…

排行榜谁最稳?

在 RedMonk 编程语言排行榜中&#xff0c;前端JavaScript 编程语言从2015年开始便稳居榜首&#xff0c;可以说是所有编程语言中最稳定的一个。 01 JavaScript 常年居于榜首原因 JavaScript 编程语言可以常年居于排行榜榜首位置&#xff0c;和它是前端工程师使用的唯一编程语言…

【树莓派】刷机、基础配置及多种方式登录

目录一、树莓派刷机二、树莓派登录1、HDMI线连接显示器登录2、串口方式登录&#xff08;1&#xff09;USB-TTL模块连接树莓派串口&#xff08;2&#xff09;修改系统配置&#xff0c;启用串口&#xff08;3&#xff09;用secureCRT登录树莓派3、网络方式登录&#xff08;1&…

基于51单片机霍尔传感器测速(仿真+源程序)

资料编号&#xff1a;196 下面是该资料仿真演示视频&#xff1a; 196-基于51单片机霍尔传感器测速&#xff08;仿真源程序全套资料&#xff09;功能简介&#xff1a; 51单片机计数测速转速测量&#xff0c;在仿真中等价于测量外部脉冲频率&#xff1b;如果修改输入脉冲的频率&…

前端小白科普:小程序组件与插件有啥区别?怎么用?

一直以为小程序组件和小程序插件是一回事&#xff0c;只是措辞不一样&#xff0c;导致造成乌龙&#xff0c;其实完全是两回事&#xff0c;插件是可以直接提供服务的&#xff0c;组件是给开发者提供的轮子&#xff0c;不能直接提供服务。 先看看微信是如何定义小程序插件的&…

[附源码]计算机毕业设计springboot健身房信息管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Flutter 离线数据方案 Flutter_Data 包

Flutter 离线数据方案 Flutter_Data 包 原文 https://levelup.gitconnected.com/flutter-offline-first-with-flutter-data-62bad61097be 前言 通过离线优先来改善您的用户体验 Flutter Data 是一个让你的应用程序先离线的软件包。 离线时&#xff0c;它在设备上使用 Hive 存储…

DirectX12 - Triangle Culling and Winding Order(三角形的剔除与绕序)

这里是SunshineBooming&#xff0c;GPU公司一枚小小的Driver工程师&#xff0c;主要工作是写DirectX12 Driver&#xff0c;我会持续更新这个DX12 Spec系列&#xff0c;可能比较冷门&#xff0c;但是都是干货和工作中的心得体会&#xff0c;有任何GPU相关的问题都可以在评论区互…

Chapter9.2:线性系统的状态空间分析与综合(下)

此系列属于胡寿松《自动控制原理题海与考研指导》(第三版)习题精选&#xff0c;仅包含部分经典习题&#xff0c;需要完整版习题答案请自行查找&#xff0c;本系列属于知识点巩固部分&#xff0c;搭配如下几个系列进行学习&#xff0c;可用于期末考试和考研复习。 自动控制原理(…