elasticsearch中的nested object查询(带空格)
发布时间
阅读量:
阅读量
这里分享一个关于Elasticsearch中嵌套对象(Nested Object)查询的实际案例,旨在解决业务场景中常见的数据匹配难题。
问题背景
在保险行业的核心业务逻辑中,清晰地区分“投保人”与“被保人”至关重要。通常情况下,一份保单对应唯一的投保人和被保人,但在团体保险(团单)场景中,往往出现一个投保人对应多个被保人的复杂关系。实际业务需求要求能够根据被保人的姓名进行精准检索,然而初期测试发现,查询结果要么完全不匹配,要么根本找不到对应的文档,这直接影响了B端管理界面的数据展示准确性。
问题分析
由于底层数据库采用了分库分表架构,若直接在B端界面发起数据库查询,需跨多个库和表进行数据聚合,性能瓶颈显著,响应速度难以满足实时查询需求。因此,架构上引入了Elasticsearch作为核心数据的搜索引擎,以提升查询效率。
故障排查初期,我们深入检查了Elasticsearch的文档映射(Mapping)配置。发现被保人姓名字段fullName被定义为text类型。熟悉ES原理的开发者知道,text类型在索引时会经过分词器处理,将完整字符串拆解为多个独立的词项(Terms)。例如,当输入“张三 里斯”时,系统可能将其存储为“张三”和“里斯”两个独立词项。此时,若直接使用完整字符串进行精确匹配查询,由于索引中不存在完整的“张
全部评论 (0)
还没有任何评论哟~
