主要内容
1. 使用映射类型来定义同一个索引中的多种文档类型
2. 可以在映射中使用的不同字段类型
3. 使用预定义的字段及其选项
4. 上述这些是如何帮助数据的索引、更新和删除
一、使用映射来定义各种文档
每片文档属于一种类型,而每种类型属于一个索引。从数据的逻辑花粉来看,可以任务索引是数据库,而类型是数据库中的表。类型包含了映射中每个字段的定义。映射包括了该类型的文档中可能出现的所有字段,并告诉Elasticsearch如何索引一篇文档的多个字段。
MergeMappingException
避免这个错误的唯一方法是重新索引类型里的所有数据,包括
1. 将类型里的所有数据移除。
2. 设置新的映射
3.再次索引所有的数据
二、用于定义文档字段的核心类型
默认情况下index被设置为analyzed,所以分析其将所有字符转为消协,并将字符串分解为单词。当期望每个单词完整匹配时,请使用这种选项。将index设置为not_analyzed将会产生相反的行为:分析过程将被略过,整个字符串被当作单独的词条进行索引。如果将index设置为no,索引就被略过了,也没有词条产生,因此无法在那个字段上进行搜索。
三、数组和多字段
如果要索引拥有多个值的字段,将这些值放入到方括号中
四、使用预定义字段
通常不用部署自定义的字段,Elasticsearch会做这件事情。它们揭示了字段相关的功能,例如_ttl字段。预定义的字段总是以下划线开头。
小结
1. 映射定义了文档中的字段,以及这些字段是如何被索引的。我们说Elasticsearch是无需模式(schema)的,因为映射是自动扩展的,不过在实际生产中,需要经常控制哪些被索引,哪些被存储以及如何被存储。
2. 文档中的多数字段是核心类型,如字符串和数值。这些字段的索引方式对于Elasticsearch的表现以及搜索结果的相关性有着很大的影响。
3. 单一字段也可以包含多个字段或取值。我们了解了数组和多字段,它们让你在单一字段中拥有同一核心类型的多个实例。
4. 除了用于文档的字段,Elasticsearch还提供了预定义的字段, 如_source和_all。配置这些字段将修改某些你并没有现实提供给文档的数据,但是对于性能和功能都有很大影响。
5. 由于Elasticsearch和Lucene分段里存储数据,而分段一旦创建就不会修改,因此更新文档意味着检索现存的问答那个,将修改放入即将索引的新文档中,然后删除旧的索引
6. 当Lucene分段异步合并时,就会移除待删的文档。这也是为什么删除整个索引要比删除单个或多个文档快--索引删除只是意味着移除磁盘上的文件,而且无需合并。
网友评论