设为首页 收藏本站
查看: 1087|回复: 0

[经验分享] ElasticSearch 类型映射

[复制链接]
YunVN网友  发表于 2017-5-20 13:31:31 |阅读模式
当查看索引里的数据,我们意识到一些奇怪的东西。
有些事情看起来有问题,我们在索引里有12个tweets,只有1个包含date 2014-09-15
现在让我们看看这些查询。
 
GET /_search?q=2014              # 12 results
GET /_search?q=2014-09-15        # 12 results !
GET /_search?q=date:2014-09-15   # 1  result
GET /_search?q=date:2014         # 0  results !
PS:如果你看了上一篇文章,你就知道哪个查询用了_all字段,哪个查询没有用这个字段。
 
为什么会有这些差别?
 
可能是因为_all索引数据的方式不同于date字段索引数据的方式。
让我们看一看es如何解释我们的文档结构,这是通过请求gb索引的tweet type的mapping信息。
 
GET /gb/_mapping/tweet
结果如下:
{
   "gb": {
      "mappings": {
         "tweet": {
            "properties": {
               "date": {
                  "type": "date",
                  "format": "dateOptionalTime"
               },
               "name": {
                  "type": "string"
               },
               "tweet": {
                  "type": "string"
               },
               "user_id": {
                  "type": "long"
               }
            }
         }
      }
   }
}
 
es已经为我们自动创建了mapping.当然,这是它自己猜测的。
 
响应告诉我们date域已经被识别为date类型,
_all字段没有提及是因为它是一个默认字段,当然了,我们知道_all字段是string类型。
 
这样,日期类型的字段和字符串类型的字段的索引方式是不同的,因为寻找过程也是不同的。
一点也不奇怪。
 
也许,你希望核心类型:strings,number,booleans,dates都以不同的方式索引,而且事实上,它们之间确实有细微差别。
 
但是,目前为止,最大的差别在于表示具体值的字段和表示全文的字段之间。
这个区别很重要,这是es跟其它数据的区别之一。
http://my.oschina.net/qiangzigege/blog/264662
 
 
 
 
 
数据类型可以分为2类:具体值和全文。
 
具体值,比如说日期或者一个用户ID,也可以包括具体的字符串比如用户名或者邮箱。
 
具体值"Foo"与具体值"foo"不同.
具体值2014 与具体值2014-09-15也不同.
 
全文,引用文本内容,比如tweet的文本或者email的内容。
 
全文通常理解为非结构化数据,问题是:自然语言的规则复杂,计算机难以解析,比如,考虑到以下句子:
 
May is fun but June bores me.
这是说月份还是人?
 
具体值就容易查询,一个值要么匹配查询要么不匹配。
用SQL表达如下:
 
WHERE name    = "John Smith"
  AND user_id = 2
  AND date    > "2014-09-15"
   
查询全文的数据就更微妙,
我们不仅仅问文档是否匹配查询,还要知道文档与查询有多匹配,
换句话来说,相关度如何?
 
很少情况下,我们想完全匹配文本段,而是在文本域里搜索,我们还希望搜索能够理解我们的意图。
 
一个针对于"UK"的搜索应该可以返回包含"United Kingdom"的文档。
 
一个针对于"jump"的搜索应该匹配 "jumped", "jumps", "jumping" 或许甚至匹配"leap"
 
"johnny walker"应该匹配"Johnnie Walker","johnnie depp"应该匹配"Johnny Depp"。
 
"fox news hunting"应该返回跟"hunting on Fox News"有关的故事,
"fox hunting news"应该返回"news stories about fox hunting"有关的。
 
为了让这些全文字段的搜索便利,es首先分析文本,然后使用结果来建立倒排索引,
我们将讨论倒排索引和分析过程。
http://my.oschina.net/qiangzigege/blog/264761
 
 
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379375-1-1.html 上篇帖子: ElasticSearch 如何搜索 下篇帖子: elasticsearch 常用脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表