- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
上篇 ES系列一之java端API操作 结束后本以为就相安无事了,但生产的问题是层出不穷的;下面我就再记录下近几周遇到的问题以及解决方案; 。
报错信息如下: 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的写入操作被阻塞了,索引只能读、删不能修改新增了;我总结了这种错误的解决方案以及步骤,如下:
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; 。
curl --location --request GET 'http://127.0.0.1:9200/_cat/allocation?v'
我使用的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);
}
测试结果如下: 这次更新的问题到此结束,后续遇到新的问题会继续补充...... 。
最后此篇关于ES系列二之常见问题解决的文章就讲到这里了,如果你想了解更多关于ES系列二之常见问题解决的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
是否了解线程的同步和异步? 线程同步:多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 线程异步:在访问资源时在空闲等待时同时访问其他资源,实现多线程机制 是否了解网
常见问题 cat系统的定位 cat本质上一个实时监控系统,主要体现在监控报表Transaction、event、problem、heartbeat等,cat系统定制的监控模型以及定制的实时分
我正在使用PowerShell中的GUI并尝试制作表单,以便在构建表单之后,用户可以与表单的一部分(+/-按钮)进行交互,以向该表单动态添加一组控件现有集的下方。 例如,将有一个组合框(下拉菜单)用于
尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出整个
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
当我尝试读取/解析输入时,我的C程序出现问题。 救命? 这是一个常见问题解答条目。 StackOverflow有许多与读取C语言中的输入有关的问题,答案通常集中在特定用户的特定问题上,而没有真正描绘出
我不知道如何在 C++ 项目中使用 TDD,但我决定先使用“Google Mock Framework”。 但我有一个问题: 当我完成测试时,是否必须从 TDD 的宏、类等中清理我的代码? 换句话说,
我从 sourceForge 获得的这个源文件中有 26 个错误。它是 Stanford CS106B library 的一部分所以应该不会有任何错误。 错误示例: C2059:语法错误:'publi
处理现有的展开/折叠“FAQ” Accordion 页面并希望“展开/折叠”功能正常工作。 我设法让页面开始时所有内容都折叠起来,但是当我单击任何列展开然后单击另一列时,原始列不会折叠。 重要的是,我
可以从 MySQL 数据库获取“常见问题解答”。我有一个存储问题和答案的表。每天在我的网站上我们都会收到数千个问题。 现在我统计一下,我的数据库中有 142,283 个问题。我的想法是通过创建常见问题
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有以下 html。它由 bootstrap 和 css url 文件组成。它有两个 Accordion 项目选项卡。但是打开的时候发现有javascript错误。当我单击 Accordion 时,它
我观看/阅读/搜索了许多教程,但都没有成功。我坚持 this tutorial . 我正在尝试将带有 JS(可能仅 CSS)的 toogle acordion 效果应用到 div 而不定位。 有两种显
我讨厌问这个问题,因为它已经被问了一百万次,但答案似乎从来都不令人满意,而且大多数线程似乎都没有得到公认的答案就被放弃了。 这正是我需要做的(由于业力低,恶意网址是故意的): http://examp
我正在使用 CRNA v0.44 。我正在进行两个屏幕注册。我在第一个屏幕上,现在我想使用 react 导航转到第二个屏幕。 但是出现错误: undefined is not an object (e
我是一名优秀的程序员,十分优秀!