在索引中有12个tweets,只有一个包含日期,但是我们看看下面查询中的total
hits。
为什么全日期的查询返回所有的tweets,而针对date
字段进行年度查询却什么都不返回?
为什么我们的结果因查询_all
字段(译者注:默认所有字段中进行查询)或date
字段而变得不同?
让我们看看Elasticsearch在对gb
索引中的tweet
类型进行mapping(也称之为模式定义[注:此词有待重新定义(schema definition)])后是如何解读我们的文档结构:
返回:
date
类型的字段和string
类型的字段的索引方式是不同的,因此导致查询结果的不同,这并不会让我们觉得惊讶。
你会期望每一种核心数据类型(strings, numbers, booleans及dates)以不同的方式进行索引,而这点也是现实:在Elasticsearch中他们是被区别对待的。
这两者的区别才真的很重要 - 这是区分搜索引擎和其他数据库的根本差异。