Elasticsearch(4)数据特性

本文探讨了Elasticsearch作为一款面向文档的数据库系统的特点,包括如何存储复杂数据结构如日期、地理位置等,并通过JSON格式实现高效的数据索引。Elasticsearch能够存储整个文档并对其进行索引,从而支持高效的全文搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语

前面3篇文章,做了个入门及实例,本文讲述Elasticsearch的数据特性。

面向文档的特性

对象在应用程序很少只是一个键和值的简单列表。往往,他们复杂的数据结构,可能包含日期、地理位置,其他对象或数组的值。

迟早你会想将这些对象存储在一个数据库中。试图用关系数据库的行和列来做这件事情,实在是相当超乎你的想象,把对象表示为一个非常大的电子表格:你必须使对象以适应表的模式(每个列一个属性字段),然而你每次检索它不得不重建它。

Elasticsearch是面向文档的,这就意味着它可以存储整个对象或文档。它不仅将它们存储,而且把每个文档的内容作为索引是为了方便让他们搜索。在Elasticsearch中,索引、搜索、排序和过滤文档数据(没有行的柱状数据)。这是一个关于数据完全不同的思考方式,也是Elasticsearch可以执行复杂的全文搜索的原因之一。

JSON

Elasticsearch使用JavaScript对象表示法,或JSON格式(文档的序列化格式)。JSON序列化支持大多数编程语言,已经成为了标准格式使用NoSQL标准。它很简单,简洁,易于阅读。

考虑这个JSON文档,它代表一个用户对象:

{
    "email":      "john@smith.com",
    "first_name": "John",
    "last_name":  "Smith",
    "info": {
        "bio":         "Eco-warrior and defender of the weak",
        "age":         25,
        "interests": [ "dolphins", "whales" ]
    },
    "join_date": "2014/05/01"
}

尽管最初的用户对象是复杂,对象的结构和含义一直保留在JSON版本。将一个对象转换为JSON作为在Elasticsearch的索引比等效过程中的平表结构(即用数据库表示一个对象,用数据库的字段属性进行索引字段进行索引,如果量巨大,则耗费时长过多)更简单。

注意

几乎所有的语言模块,将任意的数据结构或对象转换为JSON,但是细节是特定于每个语言。寻找模块处理JSON序列化或编组。官方的Elasticsearch Clients会自动处理将对象转换成JSON。

结语

Elasticsearch是面向文档的,存储数据是用JSON进行保存,以文档的方式进行索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuYunTan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值