在最初创建索引mapping时,未指定index:not_analyzed

"exact_value": {
"type": "string"
}

这样导致的后果就是 exect_value字段不能使用es的terms语法来做匹配整个字段的查询,原因是terms要求分词器不要对字段分词,否则无法使用该语法

如果想要一个字符串像数字一样能被全词匹配(类似与sql中的等于),则需要在创建字段时指定一下,如

"exact_value": {

"type": "string",

"index": "not_analyzed"

}

如果问题已经存在,则会是让人挣扎的事情。

修改es文档字段的定义代价远比新增一个字段大得多,甚至需要将数据库重新同步到es中,中间还需要一个临时索引来过渡

  • 可以考虑在es中新增一个字段来做这件事。代价也比较大,时间长了,大家可能都会忘记加新字段的原因
  • 退而求其次,根据业务判断,是否可以放弃terms查询,改为 matchPhrase 语法来精确查询包含所有关键字的文档。当然,这存在前提:业务模型中,该字段不能存在包含当前数据的文档

    如 exact_value: 你好 ;如果另一个文档的exact_value:你好 xx;则这两个文档都会被匹配出来,如果exact_value的值是一个不含停词的字段且全是字母,则不会被分词器分为多个单词,基本可以使用matchPhrase代替terms查询。

ES index not_analyzed的更多相关文章

  1. ES - Index Templates 全局index模板

    1.Index Templates 之前我们聊过Dynamic template,它作用范围是特定的Index,如果我们想针对全局Index进行设置该如何操作呢? Index Templates 可以 ...

  2. Spark2.2+ES6.4.2(三十二):ES API之index的create/update/delete/open/close(创建index时设置setting,并创建index后根据avro模板动态设置index的mapping)

    要想通过ES API对es的操作,必须获取到TransportClient对象,让后根据TransportClient获取到IndicesAdminClient对象后,方可以根据IndicesAdmi ...

  3. 浅析ES的_source、_all、store、index

    Elasticsearch中有大量关键概念容易混淆,对于初学者来说是噩梦: _source字段里存储了什么? index属性的作用是什么? 何时应该开启_all字段? store属性和_source字 ...

  4. ES 学习总结

    ES 总结: es 是基于lucene的, 是java 实现的, 很多概念和lucene是相同的 索引-- 对应数据库的表,mongoDB中的集合 文档,由字段组成, 一个字段可以出现多次. 字段,其 ...

  5. ES数据-MySql处理Date类型的数据导入处理

    用ES的小伙伴们,相信大家都遇到过Mapping处理Date类型的数据头疼问题吧. 不用头疼了,我来给你提供一种解决方案: 1.Maping定义为: {  "mappings": ...

  6. es搜索引擎

    1.es简介 2.es优缺点 3.es使用 4.es可以解决的问题 5.es举例 6.es执行结果截图 7.es数据增量方案 8.使用es搜索 一.es简介 es是一个是一个实时的分布式搜索和分析引擎 ...

  7. ES 中的那些坑

    数组 1. 数组中的 full-text 字段将被 [analyzed] 2. 数组中[所有元素]的数据类型必须一致 3. 数组的数据类型,以其 [第一个元素]为准 映射 1. 数据类型会自动进行转化 ...

  8. logstash 输出到elasticsearch 自动建立index

    由于es 单index 所能承受的数据量有限,之前情况是到400w数据300G左右的时候,整个数据的插入会变得特别慢(索引重建)甚至会导致集群之间的通信断开,于是我们采用每天一个index的方法来缓解 ...

  9. ES 15 - Elasticsearch中的数据类型 (text、keyword、date、geo等)

    目录 1 核心数据类型 1.1 字符串类型 - string(不再支持) 1.1.1 文本类型 - text 1.1.2 关键字类型 - keyword 1.2 数字类型 - 8种 1.3 日期类型 ...

随机推荐

  1. 在Winform程序中使用Spire.Pdf实现页面添加印章处理

    在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下.这样的的处理,如果文档很多,且仅仅需要电子文档的就 ...

  2. zabbix_server.conf配置文件参数

    NodeID: 在amster-child 的分布式架构中,这个ID是唯一标识zabbix node的号码 ListenPort:Trapper 类型Item监听的端口, SourceIP: 在连接其 ...

  3. Apollo系列(一):分布式配置中心Apollo安装(Linux、Docker)

    一.介绍 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...

  4. MySQL手注之联合查询注入

    了解联合查询注入之前,先要了解一下什么是union? union是用于合并两个sql查询结果的语句. 要使用union 必须有相同的列数  必须有两条以上的select语句组成  列的数据类型必须兼容 ...

  5. 学习fastapi middleware 源码调用顺序

    请求流程如图 本次学到的新东西: functools.partial 可以代码重用 用于在哪些通用的方法上加上更多的参数 try: finally可以当go的defer用 即使return后 fina ...

  6. 【网络协议】TCP/IP:数据链路层

    物理层负责把计算机中的0.1数字信号转换为具体传输媒介的物理信号(电压的高低.电波的强弱.光的闪灭) 数据链路层协议定义了(通过通信介质互连的设备间的)数据传输规范 (常见的通信介质有同轴电缆.双绞线 ...

  7. Tomcat 第六篇:类加载机制

    1. 引言 Tomcat 在部署 Web 应用的时候,是将应用放在 webapps 文件夹目录下,而 webapps 对应到 Tomcat 中是容器 Host ,里面的文件夹则是对应到 Context ...

  8. Consul 学习笔记-服务注册

    Consul简介: Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面.这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格.Consul需要 ...

  9. 我要告诉你:java接口中可以定义private私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  10. spring boot:多模块项目生成jar包(spring boot 2.3.3)

    一,多模块项目的优点: 1,为什么要使用多模块项目? 相比传统的单体工程,使用Maven的多模块配置, 有如下优点: 帮助项目划分模块,鼓励重用, 防止POM变得过于庞大, 方便某个模块的构建,而不用 ...