一 更新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设置需要高亮的字段然后设置到返回结果去即可,下面贴上查询代码:

@Testpublic 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# 折叠 复制 全屏

测试结果如下:

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

ES系列二之常见问题解决相关推荐

  1. 【人见人爱报错系列】Git常见问题解决大全

    前言 在使用的github\gitlab各种hub的过程中,会遇到各种各样的小问题,这些会给程序员们带来五光十色的烦恼,本文总结使用git的各种问题并持续更新. 一.Git用户名邮箱设置 使用git过 ...

  2. 联想黑苹果找不到触摸板_联想V330-15IKB完美黑苹果,和笔记本各类常见问题解决办法...

    本帖最后由 rclhxm 于 2020-9-17 20:31 编辑 前言 最近用了一周的时间把我的联想V330-15IKB给装上了10.15.6的黑苹果,并完美驱动(完善程度90%以上,因为可能有些领 ...

  3. ES系列十六、集群配置和维护管理

    一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...

  4. linux系统启动的第一个进程是,linux系统启动流程及常见问题解决

    运行环境:centos6 Vmware 一.系统启动流程介绍 linux系统启动时我们可以看到很多启动信息,整体来说系统启动分为以下几个过程:加电自荐:power on system test 选择启 ...

  5. 飞凌iMX6系列产品i.MX6解决方案-IMX6Q经验分享-i.MX6Q系列常见问题解决

    飞凌 iMX6系列产品一直在不断更新,包括 i.MX6ULL.i.MX6UL.i.MX6DL. i.MX6Q,目前飞凌 iMX8系列产品也已经发布.飞凌iMX6平台凭借其优异的性能,使得大量的用户选择 ...

  6. es elasticsearch 几种常见查询场景 二次分组 java读取es的查询json文件

    大家好,我是烤鸭: es中几种常见的查询场景,使用java读取es的json文件进行查询. es 中文使用手册. https://www.elastic.co/guide/cn/elasticsear ...

  7. 使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法

    使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法 参考文章: (1)使用jQuery的插件qrcode生成二维码(静态+动态生成)及常见问题解决方法 (2)https: ...

  8. 统计系列(二)常见的概率分布

    统计系列(二)常见的概率分布 离散概率分布 伯努利分布 背景:抛一次硬币,正面朝上的概率 定义:一次试验中,只有两种结果,成功(X=1)概率为p,失败(X=0)概率为1-p.定义为伯努利试验. 数学描 ...

  9. Spring常见问题解决 - AOP调用被拦截类的属性报NPE

    Spring常见问题解决 - AOP调用被拦截类的属性报NPE 一. 案例复现 二. 被拦截类的属性为何是null? 2.1 原理分析 2.2 解决 2.2.1 为何加一个 get 方法就可以避免NP ...

最新文章

  1. COCO 2019挑战赛,旷视研究院拿下三项计算机识别冠军 | ICCV 2019
  2. getline及读文件总结
  3. Redis 中常用命令
  4. 咖啡网页设计作品 简单DIV学生网页设计成品 HTML网页学生网页制作模板下载
  5. MTK 驱动(73)--- Kernel Backtrace 无法显示出具体的地址.
  6. java核心技术 pdf下载_JAVA程序员面试秘笈 PDF 下载_Java知识分享网
  7. OLTP v.s. OLAP
  8. nginx ngx_http_access_module
  9. sql server根据表中数据生成insert语句
  10. jsoup教程_1 简介
  11. 数据库内获取准确的当前时间
  12. 实验一高频小信号调谐放大器
  13. sd卡驱动分析 linux,linux下SD卡驅動分析(一)
  14. go 学习笔记之无心插柳柳成荫的接口和无为而治的空接口
  15. 计算机太极之光,且看今朝,刚柔并济,叱咤风云
  16. 奇迹mu选区后就一直显示连接服务器,奇迹mu双开
  17. java jdk--同时安装两个jdk并且切换
  18. ubuntu 安装微信(微信官方版本)
  19. 数字统计-c语言-求特殊自然数
  20. 算法与数据结构实战实验——线性数据结构实现与应用(使用java)

热门文章

  1. 计算机毕业设计JavaVue垃圾分类指南平台设计与实现(源码+系统+mysql数据库+lw文档)
  2. 分享8个强大的黑客技术学习网站
  3. 相信吗?你的电脑也能和外星文明实现接触
  4. u盘里的文件不见了怎么恢复正常?数据还有救吗?
  5. MAT常见泄漏Problem Suspect解析
  6. 【Base】ping-pong buffer
  7. linux 遍历目录查找文件find太慢,Linux下比find快N倍的文件查找命令
  8. 安徽科技学院 信网学院网络文化节 朱翔
  9. 查询除某一列外的所有列的数据
  10. java 基础(异常处理)