找到问题的解决办法了么?

es API 查询 和 数据类型的奇妙关系

Elasticsearch | 作者 menzhipeng | 发布于2020年05月19日 | 阅读数:2752

碰到了一个小问题: es 版本为 7.6, text类型的数据 使用 wildcard 方法是无法查出来的,意识到这个问题很好解决。但是想学习一下关于es 数据结构比较深层次的知识,以便于再碰到这样的问题,我能明白是因为什么而查不出来。
求大神推荐较全的资料,非常感谢
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: menzhipeng

简单说下,
第一:es在5.x后分为两种数据类型:keyword和text
两种类型适用场景不同:
keyword适合精准匹配,举例:手机号字段
text适合基于分词的全文检索,举例:正文内容字段

第二:检索类型 wildcard类似mysql like语句,本质也是模糊匹配 不是全文检索
不同检索类型的选型 建议:kibana dev tool
对比测试下

medcl - 今晚打老虎。

赞同来自: menzhipeng

wildcard是通配符匹配,要作用在一个完整的字符串上面。
keyword 类型的字段是一个整字符串term;
text 类型会分词成多个字符 term;
 
可以了解下 Elasticsearch 的 Mapping 和 Lucene 的原理 。

menzhipeng

赞同来自:

现在有这样一个场景: 我要按照关键词一次性去多个字段做模糊匹配,这样效率极地。
业务提出的要求是: 类似like , 不做分词。这样的话 在mapping设计是 用的是 keyword ,
 但是同时进行多个字段的模糊,心里就很慌。 请问有没有高手可以提出一个更好的思路。
求 知无不言~

要回复问题请先登录注册