提示:以下操作均在kibana7.7.0中操作。

问题描述:

根据es去查询商品的名称,中文查询能查询出数据,但是只输入部分英文或者数字,查询不出数据。

原因分析:

es中的分词器,只将全部的数字和英文做了分词,即将他们看成一个单词,所以,只输入部分英文或者数字时,不存在该部分的分词,估查询不出数据。

举例:

查询名称为 【来自1998年的野狼disco】的商品。查询1:如果查询 【1998】,可以;查询2:如果查询 【199】,不行;查询3:如果查询 【disco】,可以;查询4:如果查询 【dis】,不行。

解决方案:

1、创建索引

# 创建索引,并设置分词器
PUT /goods_index
{"settings": {"index.max_ngram_diff":10,"analysis": {"analyzer": {"my_ngram_analyzer": {"tokenizer": "my_ngram_tokenizer"}},"tokenizer": {"my_ngram_tokenizer": {"type": "ngram","min_gram": 1,"max_gram": 10,"token_chars": ["letter","digit"]}}}},"mappings": {"properties": {"name":{"type": "text","analyzer": "my_ngram_analyzer"},"description":{"type": "text"},"price": {"type": "double"},"createtime": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}}}
}

重点是红色部分,对需要查询的字段设置一个自定义的NGram分词器。
(支持模糊查询数字和英文的关键!)

2、增加文档

# 增加数据
PUT /goods_index/_doc
{"name" : "来自1998年的野狼disco","description" : "暂无描述。。。","createtime" : "1998-01-01 23:59:59","price": 1.99
}

3、模糊查询

# 模糊查询文档,根据'得分'和创建时间排序,并高亮
GET /goods_index/_search
{"query": {"match": {"name": "199"}},"sort": [{"_score": {"order": "desc"}},{"createtime": {"order": "desc"}}],"highlight": {"fields": {"name": {}}},"size": 10000
}

执行,发现已经可以根据英文或者数字进行模糊查询了。

友情链接:ElasticSearch——全文搜索引擎

ElasticSearch支持根据英文或者数字进行模糊查询相关推荐

  1. Qt:文本过长自动换行(支持纯英文, 纯数字)

    此代码原理是获取字符串像素长度后, 超出设置的限制宽度后进行截取操作加换行符从而达到自动换行效果 Qt的Lable自带的换行属性不支持纯英文,纯数字的字符串换行 // font 设置的字体属性 // ...

  2. ElasticSearch入门:使用ES来实现模糊查询功能

    ElasticSearch入门:使用ES来实现模糊查询功能 需求描述 方案设计 代码设计 测试中遇到的问题 总结与心得 需求描述 本文针对在工作中遇到的需求:通过es来实现模糊查询来进行总结:模糊查询 ...

  3. 数据数字mongodb 模糊查询以及$type使用

    本文是一篇关于数据数字的帖子 近最有一监控业务,由于数据采集到非数字内容,致导监控图表法无常正表现,所以要找出这部分数据,停止删除,然后开辟员从头源改正插入数据库的数据,不再发生非数字内容. 上面举一 ...

  4. postgreSQL中的时间、数字类型模糊查询

    --数字类型 select * from [表名] where cast([字段名] as char) like '%1%'select * from newploay where cast(no2 ...

  5. elasticsearch java likequery_ElasticSearch的模糊查询

    我是ElasticSearch的新手,我正在探索它的功能 . 我感兴趣的其中一个是模糊查询,我正在测试并且有麻烦使用 . 这可能是一个虚假的问题,所以我猜一个已经使用过这个功能的人会很快找到答案,至少 ...

  6. Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)

    Elasticsearch在thinkphp5中的使用(模糊查询) 需要安装elasticsearch.elastic-header-master.kibana.analysis-ik四个包,如下图所 ...

  7. 详解TableStore模糊查询——以订单场景为例

    背景 订单系统在各行各业中广泛应用,为消费者.商家后台.促销系统等第三方提供用户.产品.订单等多维度的管理和查询服务. 为了挖掘出海量订单数据的潜能,丰富高效的查询必不可少.然而很多时候并不能给出完整 ...

  8. 使用like+%模糊查询,如何才能提高性能?你用对了吗!

    点击关注公众号,利用碎片时间学习 1.常见用法 (1)搭配%使用 %代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据: (2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句 ...

  9. Greenplum 模糊查询 实践

    标签 PostgreSQL , Greenplum , orafunc , 阿里云HybridDB for PostgreSQL , reverse , like , 模糊查询 背景 文本搜索的需求分 ...

最新文章

  1. s-seq 生成序列化数字
  2. 大S变汪太!与汪小菲注册结婚
  3. 抽象类 VS 接口 (3)
  4. 设计模式--单例(Singleton)模式
  5. css3 卡片hover3D效果
  6. 面向.NET开发人员的Dapr——参考应用程序
  7. 517. 超级洗衣机
  8. vue变量传值_Vue各类组件之间传值的实现方式
  9. Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
  10. sql 数据表归档_如何在考虑规模的情况下归档SQL Server数据
  11. SM系列国密算法(转)
  12. 【ROS学习笔记】(一)常用命令的解释与举例
  13. 三层结构中的数据层设计
  14. 计算机无法访问dota服务器,dota2无法与任何服务器建立连接如何解决
  15. 英特尔神经计算棒_如何设置英特尔Movidius神经计算棒
  16. h3c交换机划分vlan
  17. springboot集成快递100实现查询快递,面单打印;面单取消
  18. java 调用felix_java – 使用SSH的Apache Felix shell
  19. Linux常用命令-云计算篇-100%亲测超详细讲解
  20. 计算机图像处理技术的应用分析,计算机图像处理技术特点及应用研究

热门文章

  1. Linux各个版本介绍
  2. ssd的smt_探访固态硬盘工厂,揭秘 SSD 生产过程
  3. jyh.project
  4. 麦克风不能录音解决方案汇总
  5. Python私教学员作业「一对一教学」
  6. 易经八卦解释鸿蒙,易懂中的五行与八卦
  7. Android 百度地图开发 全景图SDK的使用
  8. iOS跳转微信朋友圈和扫一扫页面(已废弃)
  9. c语言编辑 显示atd数在led上,2012 - 2013 学年第1学期《单片机原理及应用》课程答题纸 1_5.doc...
  10. tvs管参数数解读_TVS管的主要参数及选型总结