Elasticsearch采坑实践总结

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: Elasticsearch采坑实践总结

【1】java.lang.AbstractMethodError

异常如下:


org.elasticsearch.transport.TcpTransport.connectToChannels(Lorg/elasticsearch/cluster/node/DiscoveryNode;Lorg/elasticsearch/transport/ConnectionProfile;)Lorg/elasticsearch/transport/TcpTransport$NodeChannels;

这种类似错误,通常是由于版本问题造成的。这里es版本是5.2.2,自动引入的netty版本是5.6.8,那么降低transport-netty4-client版本与elasticsearch保持一致即可。


pom如下:

   <!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.2.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.2.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>transport-netty4-client</artifactId>
                    <groupId>org.elasticsearch.plugin</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.plugin</groupId>
            <artifactId>transport-netty4-client</artifactId>
            <version>5.2.2</version>
        </dependency>

【2】 java.lang.IllegalArgumentException:Can only use fuzzy queries on keyword and text fields - not on [createDate] which is of type [date]

异常实例:

Caused by: java.lang.IllegalArgumentException: Can only use fuzzy queries on keyword and text fields - not on [createDate] which is of type [date]
  at org.elasticsearch.index.mapper.MappedFieldType.fuzzyQuery(MappedFieldType.java:354)
  at org.elasticsearch.index.query.FuzzyQueryBuilder.doToQuery(FuzzyQueryBuilder.java:341)
  at org.elasticsearch.index.query.AbstractQueryBuilder.toQuery(AbstractQueryBuilder.java:97)
  at org.elasticsearch.index.query.QueryShardContext.lambda$toQuery$1(QueryShardContext.java:312)
  at org.elasticsearch.index.query.QueryShardContext.toQuery(QueryShardContext.java:329)
  ... 14 more


原因分析

模糊查询不能适用于type==date 的字段,只能使用于type==keyword|text


【3】java.lang.IllegalArgumentException: Unable to identify index name. Person is not a Document. Make sure the document class is annotated with @Document(indexName=“foo”)

异常实例如下:

异常实例如下:
java


背景原因分析:

@PostMapping("/person")
public String save(@RequestBody Person person) {
    IndexQuery indexQuery = new IndexQueryBuilder()
            .withId(person.getId().toString())
            .withObject(person)
            .build();
    String documentId = elasticsearchOperations.index(indexQuery);
    return documentId;
}

代码中直接用ES操作对象,那么需要对对象添加注解进行映射,Object Mapping,可以点击参考该文档。

解决方案

给Person添加映射注解,如下所示:

@Document(indexName = "person",type = "person")
public class Person {
    @Id
    private Integer id;
    @Field
    private String name;
    //...
}

解决方案

给Person添加映射注解,如下所示:

@Document(indexName = "person",type = "person")
public class Person {
    @Id
    private Integer id;
    @Field
    private String name;
    //...
}

【4】ElasticSearch中 使用 LocalDateTime

实体属性上添加注解:

@Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
目录
相关文章
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【6月更文挑战第30天】在大数据背景下,Elasticsearch作为分布式搜索分析引擎,因其扩展性和易用性备受青睐。本文指导在Java环境中集成Elasticsearch,涉及安装配置、使用RestHighLevelClient连接、索引与文档操作,如创建索引、插入文档及全文检索查询。此外,还讨论了高级查询、性能优化和故障排查,帮助开发者高效处理非结构化数据全文检索。
320 0
|
存储 监控 安全
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践1
大厂案例 - 腾讯万亿级 Elasticsearch 架构实践
405 0
|
存储 关系型数据库 MySQL
浅谈Elasticsearch的入门与实践
本文主要围绕ES核心特性:分布式存储特性和分析检索能力,介绍了概念、原理与实践案例,希望让读者快速理解ES的核心特性与应用场景。
575 14
|
9月前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
391 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
10月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案
549 3
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
|
9月前
|
数据采集 人工智能 运维
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案。
740 5
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
19729 21
|
存储 Java Maven
SpringBoot整合Jest和Elasticsearch实践
SpringBoot整合Jest和Elasticsearch实践
431 1
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
570 0
|
存储 缓存 搜索推荐
百度搜索:蓝易云【Elasticsearch 底层技术原理以及性能优化实践】
和副本、优化硬件、设计合理的索引、编写高效的查询以及利用缓存和预热等策略。通过综合考虑这些方面,可以提升Elasticsearch的性能并获得更好的搜索和分析体验。
377 0