elasticsearch nested object查询带空格

news/2024/7/7 5:46:48 标签: elasticsearch

这里总结一个实践的case,是关于elasticsearch中对于nested object类型的查询

问题背景

在保险业务中,存在投保人和被保人的概念,一般一个保单是只有一个投保人,一个被保人,也存在团单,一个投保人多个被保人。实际的需求是按照被保人的姓名去查询,结果发现返回的结果不匹配或者不存在命中的文档

问题分析

在我们业务中,因为数据库采用了分库分表,所以在b端画面的查询,如果去数据库查询,效率肯定会慢,因为多个库的数据,还存在分表,最后做聚合,性能方便肯定存在问题,最后采用elasticsearch对一些核心数据进行存储,供B端画面查询。

在出现问题后,分析了一下现有定义的elasticseach的文档mapping,发现对应的被保人姓名fullName是text类型,如果了解es,那么知道text类型的数据,是会被分词的,什么叫分词,可以自行查询了解一下。举个简单的例子,你输了的fullName为张三 里斯,如果你直接用张三 里斯去查询,无法命中,因为分词以后存储的可能是两个词 张三 和里斯,那么你想做精准匹配是无法实现的。

最后修改了fullName的type为keyword,keyword是不会被分词,且在搜索中的查询效率是高于其他的。

实验验证

定义一个nested object的索引mapping


http://www.niftyadmin.cn/n/748956.html

相关文章

图像腐蚀

1、原理 结构元素(Sturcture Element),形象称呼刷子,在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。运算结构是输出图像的相应像素。运算效果取决于结构元素大小内容以及逻辑运算性质。 对Z2上元素集合A和结构体元素…

【读书笔记】持续交付,发布可靠软件系统的方法

持续交付,发布可靠软件系统的方法 思维导图地址如下 持续交付、发布可靠软件系统的方法 前言 周期时间 决定做某种修改到该修改结果正式上线减少周期时间并建立有效反馈环节 敏捷宣言 首要任务是尽早持续交付有价值的软件并让客户满意 整体优化 用一种整体…

2021年计划

2021年计划 1、postergre sql 学习 40% 2、spring boot集成liquibase 30% 暂时解决上线遗漏脚本问题 适配不同数据库脚本更新 以微服务架构去升级 springboot集成flyway做脚本管理 100% 3、历史系统重构从0-1 梳理历史系统核心业务接口文档 基于业务与产品、开发头脑风暴建…

Redis系列-存储hash主要操作命令

Redis系列-存储篇hash主要操作函数小结 传奇文学 https://m.xs86.com hash是一些列key value(field value)的映射表。常常用其存储一些对象实例。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存。为什么会更省内存呢&a…

SpringBatch异常

Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: JobExecution: id=5, version=1, startTime=2021-05</

全链路追踪TLog

分布式追踪系统 SkyWalking,Pinpoint,基于OpenTracing规范,而且通常都是无侵入性的,并且有相对友好的管理界面来进行链路Span的查询。 TLog特性 通过对日志打标签完成轻量级微服务日志追踪提供三种接入方式:javaagent完全无侵入接入,字节码一行代码接入,基于配置文件的…

简单理解设计模式——享元模式-线程池-任务(task)

前面在写到多线程的文章的时候&#xff0c;一直想写一篇关于线程池等一系列的文章&#xff0c;做一下记录&#xff0c;本篇博客记录一下设计模式中享元模式的设计思想&#xff0c;以及使用享元模式的实现案例——线程池&#xff0c;以及线程池的简化版——任务(task) 享元模式…

阿里性能诊断利器Arthas

1、介绍 Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线…