ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

本文介绍了如何在ElasticSearch 6.3版本中实现不拆词查询,以提高搜索效率。通过match_phrase短语匹配模式,避免了像MySQL中的LIKE查询导致的性能问题。文章详细阐述了优化步骤,包括数据同步到ES索引、使用特定查询语法以及在Java和Python中的实现。同时,讨论了DTS同步和DDL变更对ES的影响及解决方案。
摘要由CSDN通过智能技术生成

ElasticSearch 6.3版本(ES)查询关键字不拆词查询:类似mysql 的 like 语句.
mysql的sql语法类似如下,采用大量like和locate语法,进行模糊查询,导致查询一个需要8秒多.通过ES优化后,总的查询在1秒内完成,提升8倍以上.

SELECT
	ecc.id,
	ecc.customer_code AS customerCode,
	...,
	ei.industry_name AS industryName 
FROM
	ec_cust_customer ecc
	LEFT JOIN ec_industry ei ON ecc.CUSTOMER_TRADE = ei.id
	LEFT JOIN ec_cust_follow_info ecfi ON ecc.id = ecfi.CUST_ID 
	AND ecfi.id = ( SELECT fi.id FROM ec_cust_follow_info fi WHERE fi.CUST_ID = ecc.id ORDER BY fi.id DESC LIMIT 1 )
	LEFT JOIN ec_cust_linkman ecl ON ecl.cust_id = ecc.ID 
	AND ecl.id = ( SELECT ecll.id FROM ec_cust_linkman ecll WHERE ecll.CUST_ID = ecc.id ORDER BY ecll.id DESC LIMIT 1 ) 
WHERE
	ecc.STATUS = 0 
	AND deleted = 0 
	AND (
		ecc.customer_code IN (
		SELECT
			r.customer_code 
		FROM
			ec_cust_change_records r 
		WHERE
			LOCATE( '名称', r.project_name ) > 0 
			AND ( LOCATE( '铁城', r.before_content ) > 0 OR LOCATE( '铁城', r.
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值