Elasticsearch 中基于wildcardQuery的模糊查询失效

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

es中常用的模糊查询为:

"query": {

        "wildcard": {

            "testWord": "*测试数据*"

        }

    }

对应java中es的API为:

QueryBuilders.
    wildcardQuery("testWord.keyword", "*测试数据*")

 一般情况下,这个模糊查询是没有问题的,但是当testWord的字段过长时,会导致es搜索失效。通过资料查询,这个文本的范围在256~32766之间,如果是汉字查询,因为一个汉字占2个字节,还会在此基础上除2。

故此,需要在创建索引之时,同时指定字段的长度:

http://ip:9200/myindex?include_type_name=true

{

    "mappings": {

        "mytype": {

            "properties": {

                "testWord": {

                    "type": "keyword",

                    "ignore_above": 32766

                }

            }

        }

    }

}

其中,mytype为自定义索引类型,默认为_doc,ignore_above即为设置字段长度的属性,注意需要删除索引之后再进行此操作。

那么原本存在数据的索引该怎么办?也是直接删除吗?我们可以利用es的表复制,来完成数据保存。

首先建一个索引:myindexcopy,之后

http://IP:9200/_reindex

{

    "source":{

        "index":"mytype"

    },

    "dest":{

        "index":"myindexcopy"

    }

}

完成数据备份,之后利用上一个api重构查询字段属性即可。

需要注意,在设置完成以后,java调用查询便不需要加keyword关键字:

 QueryBuilders. wildcardQuery("testWord", "*测试数据*") 文章来源地址https://www.toymoban.com/news/detail-448038.html

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

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

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

相关文章

  • es多字段模糊匹配wildcardQuery,java实现

    es 版本:7.10.1 spring-cloud版本:2.3.5.RELEASE spring-boot-starter-data-elasticsearch 版本 2.3.12.RELEASE spring-data-elasticsearch 版本 4.0.9.RELEASE es查询,需求:title或者content任意一个字段能匹配到即可 使用dsl查询语句如下,构建一个query ,should只要一个匹配即可 运行结果,可以查出数据

    2024年02月11日
    浏览(39)
  • Elasticsearch模糊查询

    Elasticsearch模糊查询 不计算相关度评分 前缀搜索匹配的是term,而不是field。即搜索倒排索引 前缀搜索的性能很差 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长命中索引越少,性能会好 要注意分词器,如果分词器分词了会导致前缀匹配失败.尤其是中文要设置中文分词

    2024年02月12日
    浏览(40)
  • ElasticSearch中文分词和模糊查询

            ElasticSearch是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持PB级别的结构化或者非结构化数据。早期我们应用的全局搜索是简单的SQL模糊查询,为了分担数据库压力所以用了ES,选择他的原因除了以上几点外,还有其提供的API方式简单

    2024年02月03日
    浏览(52)
  • Elasticsearch模糊查询之Wildcard

    在 Elasticsearch 中,Wildcard 查询通常用于在文本中查找匹配通配符模式的词语。Wildcard 查询是一种基于通配符的查询,它使用单个字符(?)代表一个字符,使用星号(*)代表零个或多个字符。 Wildcard 查询可用于对单个词执行模糊匹配,也可以用于对短语进行模糊匹配。它可

    2024年02月14日
    浏览(42)
  • Springboot 整合ElasticSearch 常用的插入查询,模糊查询,范围查询

    repository.deleteById(id); } catch (Exception ex) { ex.printStackTrace(); return false; } return true; } public Dog saveDog(Dog dog) { try { Dog save = repository.save(dog); System.out.println(“结果:”+save.toString()); return save; } catch (Exception ex) { ex.printStackTrace(); return null; } } public Boolean saveDogAll(List dogsList) { try { reposit

    2024年04月22日
    浏览(43)
  • Java实战:SpringBoot+ElasticSearch 实现模糊查询

    本文将详细介绍如何使用SpringBoot整合ElasticSearch,实现模糊查询、批量CRUD、排序、分页和高亮功能。我们将深入探讨ElasticSearch的相关概念和技术细节,以及如何使用SpringData Elasticsearch库简化开发过程。 ElasticSearch是一个基于Lucene构建的开源搜索引擎,它提供了一个分布式、多

    2024年04月25日
    浏览(36)
  • ElasticSearch支持根据英文或者数字进行模糊查询

    提示:以下操作均在kibana7.7.0中操作。 根据es去查询商品的名称,中文查询能查询出数据,但是只输入部分英文或者数字,查询不出数据。 es中的分词器,只将全部的数字和英文做了分词,即将他们看成一个单词,所以,只输入部分英文或者数字时,不存在该部分的分词,估

    2024年02月12日
    浏览(52)
  • Elasticsearch:使用 query_string 查询的短语及模糊查询

    在我之前的文章系列里,我详细描述了 query_string 的一些功能: Elasticsearch: query_string 查询 Elasticsearch:以更简单的方式编写具有逻辑条件的 Elasticsearch 查询 - query_string Elasticsearch:理解 query_string 和 simple_query_string 查询 在今天的文章中,我们来聊聊 query_string 中的一下特殊查询

    2024年02月09日
    浏览(45)
  • Elasticsearch实现对同一字段既能精准查询也能模糊查询

     使用@MultiField注解给字段取别名并设置为keyword类型 dao层如下 实体类如下 模糊查询测试如下: 可以看到模糊查询content中一共有3条数据有我这个分词  精准查询如下:  可以看到精准查询就只有一条结果,符合精准查询。 注意:该方法需要版本支持,具体版本未知,但是在

    2024年02月02日
    浏览(47)
  • ElasticSearch入门:使用ES来实现模糊查询功能

    本文针对在工作中遇到的需求:通过es来实现 模糊查询 来进行总结;模糊查询的具体需求是:查询基金/A股/港股等金融数据,要求可以根据 字段 , 拼音首字母 , 部分拼音全称 进行联想查询;需要注意的是,金融数据名称中可能不止包含汉字,还有英文,数字,特殊字符等

    2023年04月09日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包