es遇到坑

本文档详细介绍了Elasticsearch的安装配置过程,包括设置网络监听地址、调整内存限制、授权问题解决以及启动自启配置。同时,针对启动失败和内存不足的错误给出了具体的解决方案,确保Elasticsearch能正常运行并进行开机自动启动。

要先创建用户并授权

groupadd es

useradd es -g es -p es

chown -R es:es /data0/es/elasticsearch-6.8.0

su es

1.es启动正常,但无法访问

解决方式:

在vi config/elasticsearch.yml 中的network下添加如下内容:

network.host: 0.0.0.0

vi /etc/sysctl.conf中增加:

vm.max_map_count=655360

接着执行 sysctl -p

vi /etc/security/limits.conf中(brian为es的启动账户)

brian soft nofile 65536
brian hard nofile 131072
* soft nofile 2048
* hard nofile 131072

2.es7.1以及以下选择jdk8,以上应该根据具体版本选择,一般7.6的适配版本是jdk11

版本不合适可以选择修改脚本

vim bin/elasticsearch

#配置为elasticsearch自带jdk
export JAVA_HOME=/usr/local/nlp/elasticsearch-7.9.1/jdk
export PATH=$JAVA_HOME/bin:$PATH

#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/usr/local/nlp/elasticsearch-7.9.1/jdk/bin/java"
else
        JAVA=`which java`
fi
 

4.报错

Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/elasticsearch-7.1.1/config/jvm.options

解决方法 需要授权   es 表示需要授权的新用户

chown -R es:es /usr/local/elasticsearch/

5报错OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000700000000, 4294967296, 0) failed; error='Not enough space' (errno=12)

默认内存太大,修改/config/jvm.options下的-Xms和-Xmx的值

开机自启动

cd /etc/init.d/

vi elasticsearch

chmod 777 elasticsearch

chkconfig --add elasticsearch

service start/stop/restart

chkconfig elasticsearch on

reboot

在使用 Spring Boot 集成 Elasticsearch 的过程中,开发者常常会遇到一些典型问题,这些问题可能会影响系统的稳定性、性能和功能实现。以下是一些常见的问题及其解决方案: ### 3. 连接失败或超时 在配置 Spring Boot 应用连接 Elasticsearch 时,常见的问题是连接失败或超时。这通常由网络配置错误、Elasticsearch 服务未启动、端口未开放或防火墙限制引起。建议检查 Elasticsearch 服务是否正常运行,并确认配置文件中的主机地址和端口是否正确。此外,应确保网络策略允许应用与 Elasticsearch 之间的通信[^1]。 ### 4. 数据序列化与反序列化异常 Elasticsearch 操作通常涉及将 Java 对象转换为 JSON 格式并存储,或者从 JSON 格式转换回 Java 对象。如果实体类字段与 Elasticsearch 映射不匹配,可能会导致序列化或反序列化失败。为避免此类问题,应确保实体类字段使用正确的注解(如 `@Field`)进行定义,并与 Elasticsearch 索引映射保持一致[^2]。 ### 5. 版本兼容性问题 Spring Boot 提供的 `spring-data-elasticsearch` 模块可能与所使用的 Elasticsearch 版本存在兼容性问题。例如,某些 API 在新版本中已被弃用或移除,导致代码无法正常运行。为避免此类问题,建议在选择 Spring Boot 和 Elasticsearch 版本时,查阅官方文档以确保兼容性[^3]。 ### 6. 性能瓶颈与资源消耗 当数据量较大或查询复杂度较高时,Elasticsearch 可能会出现性能瓶颈。例如,未优化的聚合查询或全索引扫描可能导致响应延迟。为提升性能,可以优化索引结构、合理使用分页、缓存常用查询结果,并避免在高并发场景下执行昂贵的搜索操作[^4]。 ### 7. 依赖配置错误 Spring Boot 项目中需要正确引入 `spring-boot-starter-data-elasticsearch` 或其他相关依赖。如果依赖版本冲突或未正确配置,可能导致应用启动失败。建议使用 Spring Boot 的依赖管理工具(如 Maven 或 Gradle)并参考官方推荐的依赖版本[^1]。 ### 8. 自定义查询实现困难 虽然 Spring Boot 提供了基于方法名的自动查询生成机制,但面对复杂查询时,往往需要自定义查询逻辑。此时,可以使用 `ElasticsearchRestTemplate` 编写原生查询语句,灵活构建查询条件并处理返回结果。 ### 9. 索引管理不当 索引的创建、更新和删除操作如果没有妥善处理,可能导致数据不一致或查询失败。建议在应用启动时使用 `ElasticsearchRestTemplate` 自动创建索引,或在首次运行时手动定义索引结构以确保字段映射正确。 ### 示例代码:使用 ElasticsearchRestTemplate 构建自定义查询 ```java import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.BoolQueryBuilder; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import java.util.List; public class CustomElasticsearchQuery { private final ElasticsearchRestTemplate elasticsearchRestTemplate; public CustomElasticsearchQuery(ElasticsearchRestTemplate elasticsearchRestTemplate) { this.elasticsearchRestTemplate = elasticsearchRestTemplate; } public List<SearchHit<YourEntity>> searchByCustomCriteria(String keyword) { BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery("fieldName", keyword)); NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() .withQuery(queryBuilder) .build(); return elasticsearchRestTemplate.search(searchQuery, YourEntity.class); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值