本文介绍: ES模糊查询不区分大写
一、 概述
最近接到新任务,产品说名称能支持模糊搜索,且不区分大小写。
以为是数据库操作,那岂不是easy,分分钟的事情,往往事情觉得简单的时候就不简单了,脑子忽然闪现想起该模块数据是放在ES里的,ES模糊查询不分大小写???ES新手小白两眼抹黑,待我调研调研>>>>>
一顿操作ES海洋里遨游一圈~~~终于找到了,首先了解到
ES5.x以上版本使用text和keyword作为字符串类型取代之前版本的string类型。
两者实现方式略微不同,实质本质一样都是使用分析器。注意ES中的字段是什么类型的。
ES里提供了很多分析器,可以上官网看看,这样就会明白为什么这么做了,这里不多解释,ES的text analyer。
二、 keyword类型模糊查询不区分大小写
官方给出了一个解决方案,使用normalizer来解决,normalizer是keyword的一个属性,可以对keyword生成的单一term,query_string做进一步的处理。修改setting,需要先关闭索引,修改后再打开索引,防止数据丢失.
三、text类型模糊查询不区分大小写
text类型的需要写一个分析器,然后添加到text类型字段上
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。