一 更新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. Spring boot自动配置模式
  2. android加载圈,SwipeRefreshLayout加载圈不会隐藏在android中
  3. 9行代码AC_HDU-6374 Decimal(余数,因子)
  4. CC框架实践(1):实现登录成功再进入目标界面功能
  5. android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...
  6. linux 中断和进程 传递,Linux内核之进程上下文和中断上下文的区别
  7. 雪花算法id长度_【Java】分布式自增ID算法雪花算法 (snowflake,Java版)
  8. OObjective-c UIView 蒙层
  9. Linux系统下从百度云快速下载文件的姿势(2020.07月更)
  10. html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
  11. 小程序去水印解析接口,短视频解析稳定API接口教程
  12. 数据结构 创建结构体学生表 c语言
  13. 实战 | 一键导出微信阅读记录和笔记
  14. android高德SDK无法定位,高德地图 getLocation无法定位的问题
  15. CNN与句子分类之动态池化方法DCNN--模型介绍篇
  16. 智能电视linux系统安装当贝,三星电视怎样安装当贝应用?
  17. Android Studio 实现单选对话框
  18. 服务器为什么需要防御呢?
  19. windows桌面便笺使用小技巧Win10便利贴不见了在哪里调出来Win10便签怎么用
  20. 常用技术指标之一文读懂RSI指标

热门文章

  1. MATLAB学习体会(来自小木虫)
  2. 磁盘分区后取得整数大小
  3. dolphinscheduler海豚调度升级代码改造-UpgradeDolphinScheduler
  4. 通过小程序和微信社群来构建产品运营体系
  5. 百度地图定位出现4.9E -324的问题解决
  6. VS 杂项文件全面解决方法
  7. SPL 工业智能:识别指定工况
  8. 实验一 8255并行接口实验
  9. 深入讲解VsCode各场景高级调试与使用技巧
  10. 用摄像头实现远程监控咋搞不定呢