Elasticsearch实现对同一字段既能精准查询也能模糊查询

这篇具有很好参考价值的文章主要介绍了Elasticsearch实现对同一字段既能精准查询也能模糊查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 使用@MultiField注解给字段取别名并设置为keyword类型

@MultiField(mainField = @Field(type = FieldType.Text),
            otherFields = @InnerField(suffix = "text", type = FieldType.Keyword))
    private String content;

dao层如下

public interface TestRepository extends ElasticsearchRepository<TestEntity, Long> {

}

实体类如下

@Data
@ToString
@Document(indexName = "test")
public class TestEntity {
    @Id
    private String id;

    @MultiField(mainField = @Field(type = FieldType.Text),
            otherFields = @InnerField(suffix = "text", type = FieldType.Keyword))
    private String content;
}

模糊查询测试如下:

@Test
    void searchMessage(){
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().
                withQuery(QueryBuilders.matchQuery("content", "我")).build();
        for (SearchHit<TestEntity> searchHit : elasticsearchRestTemplate.search(searchQuery, TestEntity.class)) {
            System.out.println("searchHit = " + searchHit);
        }

    }

es中keyword实现模糊查询,elasticsearch,大数据,搜索引擎

可以看到模糊查询content中一共有3条数据有我这个分词

 精准查询如下:

@Test
    void searchMessage(){
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().
                withQuery(QueryBuilders.termQuery("content.text", "我")).build();
        for (SearchHit<TestEntity> searchHit : elasticsearchRestTemplate.search(searchQuery, TestEntity.class)) {
            System.out.println("searchHit = " + searchHit);
        }
    }

es中keyword实现模糊查询,elasticsearch,大数据,搜索引擎

 可以看到精准查询就只有一条结果,符合精准查询。

注意:该方法需要版本支持,具体版本未知,但是在6.6.2版本不行,而在7.17.3版本中可行文章来源地址https://www.toymoban.com/news/detail-784713.html

到了这里,关于Elasticsearch实现对同一字段既能精准查询也能模糊查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

    elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有 :查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询 :利用分词器对用户输入内容分词,然后去

    2024年01月18日
    浏览(60)
  • Elasticsearch-单字符串多字段查询

    单字符串查询实例  bool查询should的算分过程 Disjunction Max Query查询 通过Tie Breaker参数调整 MultiMatch Query查询 三种场景  MultiMatch Query语法  使用多数字段匹配解决 跨字段搜索(一个地址信息映射到不同的字段上:街道,城市,国家......) PUT /blogs/_bulk {\\\"index\\\":{\\\"_id\\\":1}} {\\\"title\\\":\\\"Qucik brown

    2024年02月06日
    浏览(67)
  • ElasticSearch - 索引增加字段并查询增加字段前的历史数据

    1. 问题引入 我们项目中有一个需求:ElasticSearch存在很多历史数据,然后需求中索引新增了一个字段,我们需要根据条件查询出历史数据,但历史数据中这个新增的字段并不存在,如何查询到历史数据呢? 1. 索引2个文档 2. 给索引增加新的字段 3. 再次索引1个文档 这个文档新

    2024年02月10日
    浏览(68)
  • Python连接Elasticsearch查询索引字段命中数详解

    📚 个人网站:ipengtao.com Elasticsearch是一款强大的搜索和分析引擎,通过其RESTful API,可以方便地与其交互。本篇文章将深入探讨如何使用Python连接Elasticsearch,并通过查询索引某个字段的命中数来实现数据统计的目的。将介绍基础的Elasticsearch查询、高级的聚合查询以及一些常

    2024年02月04日
    浏览(65)
  • trino关于查询elasticSearch中时间字段的问题

    查看官方文档:Elasticsearch connector — Trino 395 Documentation  这段话的意思就是,elasticSearch支持很多时间类型的格式化方式,但是trino中es连接器只支持默认的date类型,就是不能加时间格式化 创建 yc_test_data 索引,索引中包含两个属性create_time 和 name PUT   http://10.226.21.38:9200/yc

    2024年02月16日
    浏览(36)
  • Elasticsearch:ES|QL 查询中的元数据字段及多值字段

    在今天的文章里,我来介绍一下 ES|QL 里的元数据字段以及多值字段。我们可以利用这些元数据字段以及多值字段来针对我们的查询进行定制。这里例子的数据集,请参考文章 “Elasticsearch:ES|QL 快速入门”。 ES|QL 可以访问元数据字段。 目前支持的有: _index :文档所属的索引

    2024年02月04日
    浏览(61)
  • Elasticsearch es查询结果只返回指定筛选字段_source

    参考:https://www.exception.site/elasticsearch/elasticsearch-query-custom-columns *** 只返回title、channel结果;下列两种语法方式都可以

    2024年02月11日
    浏览(50)
  • Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!

    集群配置为:8 个 node 节点,16 核 32G,索引 4 分片 1 副本。应用程序的查询逻辑是按经纬度排序后找前 200 条文档。 1、应用对查询要求比较高,search 没有慢查询的状态。 2、集群压测性能不能上去,cpu 使用未打满,查询的 qps 上不去,且有队列堆积。 通过云厂商内核组的同

    2024年02月04日
    浏览(47)
  • 【Elasticsearch】ES精确查询和范围查询,ES时间字段排序实例,ES倒排索引介绍

    termQuery matchQuery 模糊查询 multiMatchQuery 多个字段模糊查询 如果时间字段写入时用的类型是Text,可以用“时间字段.keyword”来处理 #查询前传入分页参数 #分页后拿到总记录数 把文档D对应到的映射转换为到文档ID的映射,每个都对应着一系列的文档,这些文

    2024年02月15日
    浏览(118)
  • ElasticSearch系列 - SpringBoot整合ES:多字段查询 multi_match

    1. 什么是 ElasticSearch 的 multi_match 查询? 有时用户需要在多个字段中查询,除了使用布尔查询封装多个match查询之外,可替代的方案是使用multi_match。可以在multi_match的query子句中组织数据匹配规则,并在fields子句中指定需要搜索的字段列表。 以下是一个示例multi-match查询

    2023年04月21日
    浏览(68)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包