Elasticsearch使用中出现的错误

这篇具有很好参考价值的文章主要介绍了Elasticsearch使用中出现的错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elasticsearch使用中出现的错误

1、分页查询异常

在分页的过程中出现了一个问题是当查询的数据超过10000条的时候报了异常:

from + size must be less than or equal to: [10000]

这个问题最快捷的解决方式是增大窗口大小:

curl -XPUT http://127.0.0.1:9200/customer/_settings -d '{ "index" : { "max_result_window" : 500000}}'

但是对应增大窗口大小,会牺牲更多的服务器的内存、CPU资源,在我们这边的使用场景下,这样做是划不来的,

因为我们的目的是做目标数据的搜索,而不是大规模的遍历,所以我们这边会直接放弃超过这个数量的查询,也就

是上面的这段代码:

if (from > 10000) {
	System.out.println("测试:超过10000条直接中断");
	break;
}

2、SpringBoot Elasticsearch 7.x 聚合查询遇到的问题

2.1 时间的问题

报错:

java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: {},ISO

resolved to 2019-04-30T16:00 of type java.time.format.Parsed

解决:

POJO 类中 Date 类型转化为 LocalDate 类型

// 创建时间
@Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second)
private LocalDate createTime;

// 更新时间
@Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second)
private LocalDate updateTime;

先试第一个再试第二个

java.time.LocalDate

org.joda.time.LocalDate

2.2 无法进行聚类的问题

报错:

org.springframework.data.elasticsearch.UncategorizedElasticsearchException:

Elasticsearch exception [type=search_phase_execution_exception, reason=all shards

failed]; nested exception is ElasticsearchStatusException[Elasticsearch exception

[type=search_phase_execution_exception, reason=all shards failed]]; nested:

ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception,

reason=Text fields are not optimised for operations that require per-document field

data like aggregations and sorting, so these operations are disabled by default.

Please use a keyword field instead. Alternatively, set fielddata=true on

[categoryName] in order to load field data by uninverting the inverted index. Note

that this can use significant memory.]]; nested: ElasticsearchException[Elasticsearch

exception [type=illegal_argument_exception, reason=Text fields are not optimised for

operations that require per-document field data like aggregations and sorting, so

these operations are disabled by default. Please use a keyword field instead.

Alternatively, set fielddata=true on [categoryName] in order to load field data by

uninverting the inverted index. Note that this can use significant memory.]];

解决:

报错中有这样一句:set fielddata=true on [categoryName]

如果聚类结果是需要分词的:

在 POJO 类中添加:fielddata=true

@Field(type = FieldType.Keyword, fielddata=true)
private String categoryName;

设置了之后发现不生效,还需要进行如下操作:

PUT shop_info/_mapping/docs
{
  "properties": {
    "categoryName": {
      "type": "text",
      "fielddata": "true"
    }
  }
}

如果聚类结果是不需要分词的,可以这样处理:

builder.addAggregation(AggregationBuilders.terms("skuCategory").field("categoryName.keyword"))

2.3 类型转换的问题

报错:

java.lang.ClassCastException: class

org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms cannot be cast to

class org.elasticsearch.search.aggregations.bucket.terms.StringTerms

(org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms and

org.elasticsearch.search.aggregations.bucket.terms.StringTerms are in unnamed module

of loader 'app')

原因:

报错中是无法转化成 StringTerms 类型

在之前的版本中是可以的,但在 7 版本以上就不好使了

解决:

需要将 StringTerms 类型改为 Terms 类型

// 获取分组数据
Terms terms = Objects.requireNonNull(searchSkuInfo.getAggregations()).get(termsId);

2.4 QueryBuilders.termQuery() 查询无数据的问题

报错:

QueryBuilders.termQuery() 查询没有数据

原因:

原因第一个可能是中文的缘故,这时候可以用英文试一试,需中文查询还需要解决。

原因第二个可能是含义没有弄清楚,QueryBuilders.termQuery() 精准匹配,不进行分词,也不是模糊匹

配, 是完全匹配才可以好使,而且只支持单个添加,多个条件需要用 QueryBuilders.termsQuery()

原因第三个可能是 Java Rest Client 客户端自带的 bug。

解决:

方法一:可以将 QueryBuilders.termQuery(name, value) 中的 name 加上 .keyword

方法二:可以将 QueryBuilders.termQuery() 直接用 QueryBuilders.matchPhraseQuery() 代替,

QueryBuilders.matchPhraseQuery() 也是进行精准匹配,match 查询是高级查询, 底层使用了 term 查

询。

3、安装中出现的问题

3.1 Elasticsearch7.1.0启动出现初始化密钥库问题

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.6.0/config/elasticsearch.keystore
Likely root cause: java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-7.1.0/config/elasticsearch.keystore
 at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
 at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
 at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
 at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
 at java.nio.file.Files.newByteChannel(Files.java:361)
 at java.nio.file.Files.newByteChannel(Files.java:407)
 at org.apache.lucene.store.SimpleFSDirectory.openInput(SimpleFSDirectory.java:77)
 at org.elasticsearch.common.settings.KeyStoreWrapper.load(KeyStoreWrapper.java:206)
 at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:224)
 at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:289)
 at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
 at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
 at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
 at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
 at org.elasticsearch.cli.Command.main(Command.java:90)
 at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
 at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Refer to the log for complete error details.

这个版本需要进行安全认证功能需要创建elasticsearch.keystore这个文件,所以输入下面的命令:文章来源地址https://www.toymoban.com/news/detail-644960.html

./bin/elasticsearch-keystore create

到了这里,关于Elasticsearch使用中出现的错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sonar下启动发生错误,elasticsearch启动错误

     Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 ,java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql,且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启动sonar发生错误 5.检查日志 首先检查sonar.log 再检查es.log

    2024年04月17日
    浏览(71)
  • 安装Elasticsearch 8.12.2版本出现的问题

            在Elasticsearch 官网下载了一个es的安装包,准备放在windows电脑上研究研究,下载下来之后启动报错。 jdk版本对应 warning: ignoring JAVA_HOME=E:devjdkjdk17jdk-17.0.10; using bundled JDK Exception in thread \\\"main\\\" java.lang.RuntimeException: starting java failed with [1] output: # # There is insufficient

    2024年03月26日
    浏览(57)
  • Elasticsearch 一段时间后出现 SocketTimeoutException的问题

    java springboot 使用ES客户端连接 一段时间闲置后,首次调用es命令会报SocketTimeOutException问题,再次调用不会报错 问题出现原因: Elasticsearch 客户端会根据服务器返回的HTTP报文内容,来决定客户端保持HTTP连接Keep-Alive状态的策略。 如果结果如下,那么保持HTTP连接 Keep-Alive状态为

    2024年02月09日
    浏览(44)
  • 操作elasticsearch出现cluster_block_exception

    在操作ES的时候报403的错误并且提示 reason blocked by FORBIDDEN/12/index read-only / allow delete 主要是ES存储空间不足,es触发了自动保护机制,将索引设置为只读模式 PUT 地址/ 索引 / _settings 我使用的是谷歌插件elasticsearch-head

    2024年02月17日
    浏览(37)
  • elasticsearch-head 连接ES出现401问题解决

    写在前面:ES 和elasticsearch-head 安装在同一台机器,ES启用了X-pack,但是在elasticsearch-head 连接时提示401无权限访问,查了好久,找到了解决方案。 问题: 解决方法: 修改ES配置文件,elasticsearch.yml,添加如下一行内容: 然后重启Es服务,即可正常连接访问。

    2024年02月16日
    浏览(42)
  • Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原

    🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客  🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。  🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 背景 问题复原 问题排查和定位

    2024年02月06日
    浏览(38)
  • 解决 elasticsearch 启动错误 bootstrap checks failed

    异常信息: 分析原因:bootstrap 校验失败 解决方法:将当前用户的软硬限制调大 修改配置文件,/etc/security/limits.conf 修改配置文件,/etc/security/limits.d/90-nproc.conf 修改配置文件,/etc/sysctl.conf 重新加载

    2024年02月12日
    浏览(41)
  • 71. ElasticSearch 5.0.0 安装部署常见错误或问题

    原因: 解决方案: 原因: 解决方案: 原因: 原因: 解决方案: 原因: 解决方案: 原因: 解决方案: 原因: 解决方案: 原因: 解决方案:

    2024年02月14日
    浏览(35)
  • elasticsearch查询出现Limit of total fields 1000 has been exceeded

    在项目中使用elasticsearch保存日志等相关数据,查询页面查询这些日志数据 提示:这里描述项目中遇到的问题: 今天在检查日志数据时,发现数据出不来,检查后端日志,发现一直在报Limit of total fields 1000 has been exceeded的问题 提示:这里填写问题的分析: 经过问题排查,发现

    2024年02月04日
    浏览(41)
  • Elasticsearch - 新增数据时 出现index_not_found_exception的解决办法

    前言 新增数据时出现 index_not_found_exception  ,表明该index不存在。出现的原因: es未开启自动创建索引功能 或者不想启动es自动创建索引,但又没手动创建索引 解决方法1:开启es自动创建索引 手动修改 /etc/elasticsearch/elasticsearch.yml 文件 或者在kibana中执行命令 解决方法2:不开

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包