`

ElasticSearch 类型映射

阅读更多
当查看索引里的数据,我们意识到一些奇怪的东西。
有些事情看起来有问题,我们在索引里有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
 
 
 
 
分享到:
评论

相关推荐

    Elasticsearch数据映射与类型的全面解析

    内容概要:本文详细介绍了Elasticsearch的数据映射和类型,涵盖了核心概念、工作原理、映射的基础与类型详解、动态映射、动态模板、映射元数据以及索引的最佳实践。通过具体示例,解释了如何创建索引、定义映射、...

    Elasticsearch(015):es常见的字段映射类型之数字类型(numeric)

    文章目录简介示例注意事项 ...#给example索引添加字段映射,默认docs类型 PUT example/docs/_mapping { properties: { id:{ type:long }, name:{ type:keyword }, age:{ type:integer },

    一款基于Java注解的elasticsearch mapping生成工具,支持ES 5.2.0所有可选参数.zip

    而标题中提到的"一款基于Java注解的elasticsearch mapping生成工具",正是针对这一需求,为开发者提供了一种简洁且高效的方式来创建和管理ES的映射。 **Java注解与Elasticsearch Mapping** Java注解是一种元数据,...

    ArcGIS桌面工具--矢量数据导入elasticsearch

    本文将深入探讨如何利用ArcGIS桌面工具将矢量数据(如.shp文件)导入到Elasticsearch(ES)中,以便进行高效的数据存储、检索和分析。 首先,ArcGIS桌面软件提供了丰富的地理数据处理功能,其中包括支持多种矢量...

    elasticsearch7.17.10-最新支持Java1.8版本

    5. **动态映射**:Elasticsearch支持动态字段映射,意味着可以自动识别新添加字段的数据类型,无需预先定义。 6. **多租户**:一个Elasticsearch实例可以支持多个索引,每个索引有自己的设置和映射,实现资源隔离。...

    基于.netcore搜索封装ElasticSearch.zip

    Elasticsearch.NET是Elastic官方提供的.NET低级别客户端,而Nest则是其高级别、类型安全的客户端,提供了一种更接近C#的对象模型来操作Elasticsearch。通过这两个库,开发者可以更加便捷地在.NET Core应用中使用...

    Elasticsearch工具类

    此外,工具类实现了对Elasticsearch的映射功能,即将POJO(Plain Old Java Object)的结构导入Elasticsearch。这一过程通常涉及到序列化和反序列化,确保Java对象和JSON文档之间的转换顺利进行。例如,使用Jackson库...

    Elasticsearch 2.x 版本中映射的应用.pdf

    可以在创建索引时指定初始映射,也可以后续通过发送 PUT 请求至 `/索引名/_mapping/类型名` 来添加新的映射或更新现有类型映射。但请注意,无法修改已有字段的映射。如果需要改变字段的映射方式,必须重新创建索引或...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    在6.8.0版本中,Elasticsearch 提供了强大的索引管理和查询功能,支持多种数据类型,如文本、数值、日期等。此版本对性能进行了优化,增强了稳定性,并修复了一些已知问题。它还支持多租户,允许在一个集群中管理多...

    精选7道Elastic Search面试题!.pdf

    BigDesk Plugin 提供节点的实时状态监控,Elasticsearch Head Plugin 是一个客户端工具,Kibana 是 ES 官方推荐的数据报表和搜索工具。 七、ES 自动映射的规则? ES 映射是用于确定字段类型,将新增的每个字段数据...

    elastic search 7.6.2 查询

    动态映射是指在文档写入 Elasticsearch 时,会根据文档字段自动识别类型,而静态映射是指事先定义好映射,包含文档的各个字段及其类型等。 三、文档 文档是用来搜索的数据,其中的每一条数据就是一个文档。 四、...

    maven springmvc集成elasticsearch客户端项目

    "es搜索引擎"标签进一步确认了我们正在处理一个与Elasticsearch相关的项目,Elasticsearch通常用于处理大规模数据的搜索和分析任务。 **文件名称列表详解:** 1. **.classpath** - 这是一个Eclipse项目文件,包含...

    elasticSearch的操作demo

    最后,`es`包可能是Elasticsearch相关的操作接口或抽象类,它们定义了与Elasticsearch交互的方法,如添加、更新、删除文档,以及查询等。例如: ```java public interface ElasticsearchRepository { void save...

    elasticsearch-jdbc-2.3.3.0-dist.zip

    用户需要确保MySQL中的数据类型与Elasticsearch的映射正确,以保证数据的一致性和可用性。 4. **全文搜索与分析**: 一旦数据被导入Elasticsearch,就可以利用其强大的全文搜索、聚合和分析功能进行复杂查询。...

    elasticsearch-head 可视化界面

    **Elasticsearch-Head:一个强大的可视化界面** Elasticsearch-Head是一款专为Elasticsearch设计的开源可视化管理工具,它极大地简化了Elasticsearch集群的管理和监控工作。这款插件提供了一个直观、友好的用户界面...

    Elasticsearch数据导出工具

    Elasticsearch数据导出工具是一种高效实用的解决方案,它允许用户方便地从Elasticsearch(ES)集群中抽取数据,并将其导出到不同的目标,如MySQL数据库或本地文件系统。这款工具尤其适用于需要进行数据迁移、备份或...

    es-mysql数据映射sql编写

    es-mysql数据映射sql编写

    索引构建秘籍:如何定义 Elasticsearch 中的映射?

    ### 索引构建秘籍:如何定义 Elasticsearch 中的映射? #### 一、映射的重要性 ...通过以上介绍,我们可以看到 Elasticsearch 提供了丰富的字段类型和属性选项,使得我们可以灵活地根据业务需求定制最适合的映射方案。

Global site tag (gtag.js) - Google Analytics