想实现一个人相关信息的搜索,包含姓名,身份证号,出生日期,性别,学历,各种地址:如出生地址,现住址,户籍地址等。如何设计mapping?
支持模糊搜索 姓名、身份证、各种地址,性别,身份证等,支持类似Google搜索似的自动补全查询,
姓名支持拼音搜索,首字母,同音字搜索,
身份证支持模糊搜索,各种地址支持模糊搜索。
例如搜索张三 男 河北,能从相应的字段中搜索出结果。
谢谢!
支持模糊搜索 姓名、身份证、各种地址,性别,身份证等,支持类似Google搜索似的自动补全查询,
姓名支持拼音搜索,首字母,同音字搜索,
身份证支持模糊搜索,各种地址支持模糊搜索。
例如搜索张三 男 河北,能从相应的字段中搜索出结果。
谢谢!
4 个回复
yayg2008
赞同来自: wokeyi
“例如搜索张三 男 河北,能从相应的字段中搜索出结果”,这里需要搜索的字段要添加到_all (默认所有字段都会加入all,通常为了性能考虑,会设置默认不加,指定字段添加)。
chinagrowing
赞同来自:
2. 确认字段是不是需要创建索引。索引字段即你对这个字段有查询需求。所以,“姓名、身份证、各种地址”这些有查询需求的都必须配置索引。
3. 对于string类型字符串,需要确定是否需要分词。例如身份证肯定不需要分词,因为本身就是一个字符串,而地址需要分词,例如“北京市朝阳区望京站”,你可能希望搜索“朝阳 望京”能够搜索出匹配记录。
4. 对于date类型(如果有),确认下日期的格式。es默认UTC和毫秒时间戳都支持,而对于其他时间格式,如“20180409”这种类型,就需要设置相应的format字段,显式告诉es你的字段格式。
按照这几个步骤来,你应该问题不大。
ps: "姓名支持拼音搜索", 那需要再存储一个字段,记录姓名的拼音。
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自:
1自动补足借助:suggester实现,或者简单点prefix前缀匹配实现,
2模糊搜索支持wildcard实现。
es_zoom
赞同来自: