CN114064660A - 基于ElasticSearch的数据结构化分析方法 - Google Patents
基于ElasticSearch的数据结构化分析方法 Download PDFInfo
- Publication number
- CN114064660A CN114064660A CN202111435176.6A CN202111435176A CN114064660A CN 114064660 A CN114064660 A CN 114064660A CN 202111435176 A CN202111435176 A CN 202111435176A CN 114064660 A CN114064660 A CN 114064660A
- Authority
- CN
- China
- Prior art keywords
- data
- clickhouse
- json
- field
- data table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于ElasticSearch的数据结构化分析方法,包括根据待写入ElasticSearch的文档的JSON数据构建JSON Schema;在目标索引的元数据中检测相关联的ClickHouse数据表;将数据信息按照字段与数据表的列的映射关系写入数据表;使数据表的数据与ElasticSearch的数据同步;利用结构化工具通过数据表对存储的数据进行查询和分析。本发明在保持文本检索能力的前提下,将数据同步写入ClickHouse,提供了结构化分析能力,技术人员可便捷的对数值型数据进行统计查询、关联查询,多维聚合和分析,降低了***的开发和维护难度,提升了***的研发效率和可用性。
Description
技术领域
本发明属于工业互联网平台数据分析技术领域,涉及一种基于ElasticSearch的数据结构化分析方法。
背景技术
工业互联网平台是一个可以实现企业产品、生产设备与***的快速互联互通的平台,该平台能够通过数据分析、机器学***台而言,其服务目标是涉及各行各业,因此要求平台具有极强的通用性;为了满足这种通用性,平台流程和表单基本采用无模式的数据结构方式,具体为ElasticSearch数据结构,这类数据结构支持分布式、多租户和全文搜索,具有优异的读写和检索性能,被广泛应用于无模式的数据存储、搜索和分析海量数据。
工业互联网平台需要对数据进行分析,以数据分析指导客户部署,但是目前平台使用的ElasticSearch虽然能较好的完成数据的读写、存取和基于文本的检索,但ElasticSearch中数据存储为JSON格式,缺乏模式约束,分析手段以文本检索为主,数据的规范和质量依赖软件***设计和相关技术人员素质。在进行数据分析时,需要从ElasticSearch中查询文档JSON数据,再传输到应用服务,在应用服务中进行数据的解析处理、计算分析,数据量化分析能力(包含数据统计、关联查询、分组聚合等)较弱,需要用户根据查询结果获取的JSON数据,自主设计和实现,增加了***设计和实现的复杂度。且ElasticSearch的数据传输JSON格式,数据存储开销较大,传输每条数据记录文档都携带完整的格式字段数据,网络传输的数据较大,消耗更多的网络带宽和数据处理的内存开销。只适合文本数据的检索,不利于数值型数据的关联查询和聚合分析。
发明内容
有鉴于此,本发明的目的在于提供一种便于基于ElasticSearch的数据结构化分析方法。
为达到上述目的,本发明提供如下技术方案:
一种基于ElasticSearch的数据结构化分析方法,其特征在于,包括以下步骤:
S1、分析待写入ElasticSearch的文档的JSON数据,构建相应的JSON Schema;
S2、在待写入文档的目标索引的元数据中检测是否存在与待写入文档提取的JSON字段的字段信息相关联的ClickHouse数据表;如果存在则执行S3步骤;否则,执行S4步骤;
S3、提取待写入文档的各JSON字段的数据信息,将数据信息按照字段与ClickHouse数据表的列的映射关系写入ClickHouse数据表,并将待写入文档写入目标索引中;
S4、在目标索引根据待写入文档及该索引中各文档的JSON字段新建ClickHouse数据表,并重新形成目标索引的元数据;
S5、将ElasticSearch中该目标索引所有文档的数据逐一写入新建的ClickHouse数据表;
S6、使ClickHouse数据表的数据与ElasticSearch的数据同步;
S7、利用结构化工具通过ClickHouse数据表对存储的数据进行查询和分析。
进一步的,所述S1步骤具体包括以下子步骤:
S11、分析待写入文档的JSON数据,获取数据的字段信息;
S12、获取JSON的JSON Schema数据,构建相应的JSON Schema。
进一步的,所述S2步骤包括:
S21、从元数据中查询索引A的ClickHouse数据表,如果查询到索引A的ClickHouse数据表,则执行S22步骤;否则,执行S26步骤;
S22、获取ClickHouse数据表的列与索引A的字段的映射关系;
S23、逐一将文档a的各字段的字段信息与数据表B的列映射的字段的字段信息进行比较,如果文档a的字段的字段信息与数据表B中的一列映射的字段的字段信息相同,则判定该字段与数据表B的列之间建立了映射关系;
S24、判断文档a的所有字段是否均与数据表B中的列建立了映射关系,如果文档a的所有字段均与数据表B的列建立了映射关系,则执行S25步骤;否则,执行S26步骤。
S25、判定数据表B为文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S3步骤;
S26、判定不存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S4步骤。
进一步的,在所述S3步骤中,提取待写入文档的各JSON字段的数据信息,将数据信息按照字段与ClickHouse数据表的列的映射关系写入ClickHouse数据表包括:
S31、遍历待写入文档的JSON Schema的properties数据,从properties数据中提取待写入文档的各JSON字段的数据信息;
S32、按照字段与ClickHouse数据表的列的映射关系,通过SQL将各JSON字段的数据信息写入ClickHouse数据表;
S33、执行数据查询语句,验证数据写入是否正确。
进一步的,所述S4步骤包括:
S41、将待写入文档写入目标索引中;
S42、提取目标索引中各文档的JSON Schema的properties中的字段信息,组织建表SQL新建一个ClickHouse数据表;
S43、记录目标索引中文档的JSON字段与相应的ClickHouse数据表的列的映射关系,重新形成目标索引的元数据。
进一步的,所述S5步骤包括:
S51、获取索引A所有文档的JSON数据;
S52、逐条提取每一文档的JSON数据,并遍历文档的JSON Schema的properties数据,提取properties数据中每一字段的数据并写入新建的ClickHouse数据表的对应列中。
进一步的,获取目标索引所有文档的JSON数据的方法为:
使用ElasticSearch的数据查询接口Scroll API查询索引A的所有文档,从查询的返回结果获取目标索引的JSON集合。
进一步的,所述元数据包括ElasticSearch的索引名称、索引的字段名称、索引的字段数据类型、索引的ClickHouse数据表名称、ClickHouse数据表的列名称和ClickHouse数据表的列数据类型。
进一步的,在执行所述S1步骤之前,先建立ElasticSearch各索引的元数据,具体包括以下步骤:
S101、在ElasticSearch的索引中提取各文档的JSON数据的字段信息构建JSONSchema;所述字段信息包括字段名称和字段数据类型;
S102、根据提取的字段信息建立索引的ClickHouse数据表,使索引中文档的JSON字段与ClickHouse数据表的列形成映射关系;
S103、记录索引中文档的JSON字段和关联的ClickHouse数据表的列的映射关系,形成索引的元数据。
进一步的,所述结构化工具为结构化SQL或BI工具。
本发明中,采用JSON Schema解析JSON,提取数据和元数据并完成结构化存储,可以使用SQL便捷的进行数据的查询分析,高效的完成查询分析业务。通过ElasticSearch数据同步写入ClickHouse关系数据库的方法,可以充分发挥ElasticSearch的文本检索优势和ClickHouse的大数据分析能力,便于按照业务查询分析需求,动态组织查询、统计、关联、聚合SQL语句,执行SQL语句,获取目标分析结果。从而能够快速实现数值型数据的查询分析,减少业务耦合和依赖,便于实现工业互联网平台通用业务模型的数据应用。
附图说明
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:
图1为本发明基于ElasticSearch的数据结构化分析方法的一个优选实施例的流程图。
图2为建立元数据的ClickHouse数据表的流程图。
图3为步骤S2的流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
如图1所示,本发明基于ElasticSearch的数据结构化分析方法的一个优选实施例包括以下步骤:
S1、分析待写入ElasticSearch的文档的JSON数据,构建相应的JSON Schema。
其中,JSON为一种数据存取和传输的文本协议,可以阐述表达复杂的数据结构,结构高度灵活,语法小,重量轻。
JSON Schema用于为JSON的提供模式约束和验证规则,包括字段名称、字段数据类型、是否必填等。
ElasticSearch,是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据,支持的全文索引和检索,数据使用索引组织维护,一个索引可以包括一个或多个文档,单个文档以JSON的格式存取和传输。实际业务场景中同一业务数据集合存储为一个索引。
下面以待写入文档的编号为a,该文档a待写入的目标索引为索引A为例,本步骤具体可包括以下子步骤:
S11、分析文档a的JSON数据,获取数据的字段信息。假设文档a记录的是一本在售图书的信息,其JSON数据如下:
从上述内容可知,该JSON为一个对象(Object),字段包括id、name、put_on_at、category、author、store_count、sell_count,price。各个字段的字段名称、数据和字段数据类型如表1所示:
表1
字段名称 | 数据 | 字段数据类型 |
Id | 1000 | 整数值 |
name | 钢铁是怎样炼成的 | 文本 |
Category | 图书励志经典 | 多个文本项(文本数组) |
Author | 尼古拉·奥斯特洛夫斯基 | 文本 |
store_count | 1234 | 整数值 |
sell_count | 321 | 整数值 |
price | 45.5 | 浮点数值 |
S12、获取JSON的JSON Schema数据,构建相应的JSON Schema。优选为使用genson-js获取JSON的JSON Schema数据,genson-js为一个开源的JSON Schema Generator实现,可以根据输入的JSON生成相应的JSON Schema信息。例如,对于上述图书的JSON信息,构建的JSON Schema如下:
S2、在索引A(即文档a待写入的目标索引)的元数据中检测是否存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;如果存在则执行S24步骤,直接将文档a的数据写入相关联的ClickHouse数据表即可;否则,说明文档a的数据无法写入索引A的ClickHouse数据表,执行S25步骤。
其中,ClickHouse是一款开源的面向联机分析处理的列式数据库,用于联机分析(OLAP)的列式数据库管理***(DBMS),最核心的特点是极致压缩率和极速查询性能。同时,ClickHouse支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异。ClickHouse数据使用数据表来组织数据,输出写入、修改、查询通过组织SQL语句,执行SQL语句完成相关操作或获取查询结果。
元数据包括ElasticSearch的索引名称、索引的字段名称、索引的字段数据类型、索引的ClickHouse数据表名称、ClickHouse数据表的列名称和ClickHouse数据表的列数据类型。所述元数据中的ClickHouse数据表可在建立索引的时候预先建立,也可以先不建立ClickHouse数据表,在写入索引的第一个文档时,执行S21步骤时再建立ClickHouse数据表。如图2所示,建立元数据的ClickHouse数据表包括以下步骤:
S101、在ElasticSearch的索引中提取各文档的JSON数据的字段信息构建JSONSchema;所述字段信息包括字段名称和字段数据类型。具体过程可参考S1步骤。
S102、根据JSON Schema的properties根据提取的字段信息,并组织ClickHouse建表SQL,执行该建表SQL建立索引的ClickHouse数据表,使索引中文档的JSON字段与ClickHouse数据表的列形成映射关系。具体过程可参考后面的S42步骤。
S103、记录索引中文档的JSON字段和关联的ClickHouse数据表的列的映射关系,形成索引的元数据。具体过程可参考后面的S43步骤。
如图3所示,S2步骤具体可包括以下子步骤:
S21、从元数据中查询索引A的ClickHouse数据表,如果查询到索引A的ClickHouse数据表,则执行S22步骤,判断该ClickHouse数据表与文档a是否相关;如果未查询到索引A的ClickHouse数据表,则是说明索引A中之前可能没有写入过文件,因此未生成过ClickHouse数据表,执行S26步骤,以便于新建索引A的ClickHouse数据表。
S22、获取ClickHouse数据表的列与索引A的字段的映射关系。假设从元数据中查询到索引A中有ClickHouse数据表B,则获取数据表B的列与索引A的字段的映射关系。
S23、逐一将文档a的各字段的字段信息与数据表B的列映射的字段的字段信息进行比较,如果文档a的字段的字段信息与数据表B中的一列映射的字段的字段信息相同,则判定该字段与数据表B的列之间建立了映射关系。
S24、判断文档a的所有字段是否均与数据表B中的列建立了映射关系,如果文档a的所有字段均与数据表B的列建立了映射关系,则说明文档a的格式与均为索引A的现有格式,可以直接写入数据,执行S25步骤;否则,说明文档a的格式不是索引A的现有格式,执行S26步骤。例如,如果以前的索引A中没有记录图书的销售数量,即没有sell_count字段;现在希望记录图书的销售数量以便于分析图书的受欢迎程度,从而在文档a中增加了sell_count字段;由于sell_count字段与数据表B的列没有映射关系,此时会执行S26步骤。
S25、判定数据表B为文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S3步骤,直接将数据写入数据表B。
S26、判定不存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S4步骤,新建一个ClickHouse数据表。
例如,对于上述JSON Schema数据,根据其字段名称和字段数据类型,得出其相关联的ClickHouse数据表应该包括的列名称和列类型如表2所示:
表2
列名称 | 列类型 |
Id | UInt32(整数) |
name | String(文本) |
Category | Array(String)(文本数组) |
Author | String(文本) |
store_count | UInt32(整数) |
sell_count | UInt32(整数) |
price | Float32(浮点数) |
如果索引A的数据表B中包含了表2中所有的列名称,且列名称对应的列类型也与表2一致,则说明索引A存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;如果索引A的数据表B中未包含表2中所有的列名称,或者虽然包含了表2中所有的列名称,但有至少一个列名称对应的列类型与表2不一致,则说明索引A不存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表。假设索引A的数据表B为与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表,则文档a和字段与数据表B的列的映射关系数据如表3所示:
表3
ES索引名称 | ES字段 | CK表名称 | CK列名称 | 数据类型 | 备注 |
索引A | id | B | id | 整数 | 书本编号 |
索引A | name | B | name | 文本 | 书本名称 |
索引A | category | B | category | 文本数组 | 分类标签 |
索引A | author | B | author | 文本 | 作者 |
索引A | store_count | B | store_count | 整数 | 库存剩余数量 |
索引A | sell_count | B | sell_count | 整数 | 已销售数量 |
索引A | price | B | price | 浮点数 | 单价 |
上表中,ES为ElasticSearch的简写,CK为ClickHouse的简写。
S3、提取文档a的各JSON字段的数据信息,将数据信息按照字段与数据表B的列的映射关系写入数据表B,并将文档a写入索引A中。将文档a的JSON字段的数据信息写入数据表B可包括以下子步骤:
S31、遍历文档a的JSON Schema的properties数据,从properties数据中提取文档a的各JSON字段的数据信息。即从文档a的id、name、put_on_at、category、author、store_count和sell_count,price字段中提取记录的数据,从而得到下列数据:{1000,'钢铁是怎样炼成的',['图书','励志','经典'],'尼古拉·奥斯特洛夫斯基',1234,321,45.5}。
S32、按照字段与数据表B的列的映射关系,通过SQL将各JSON字段的数据信息写入数据表B。例如,可通过以下SQL指令将数据信息写入数据表B:Insert into B values(1000,'钢铁是怎样炼成的',['图书','励志','经典'],'尼古拉·奥斯特洛夫斯基',1234,321,45.5);
S33、执行数据查询语句,验证数据表B的数据写入是否正确;如果验证正确则文档a的数据写入完成。例如,如果在数据表B查询到如表4所示的信息,则说明文档a的数据写入正确。
表4
S4、在索引A根据文档a及该索引中各文档的JSON字段新建ClickHouse数据表,并重新形成索引A的元数据。本步骤具体可包括以下子步骤:
S41、将文档a写入索引A中;通过先将文档a写入索引A,便于在之后新建ClickHouse数据表时将文档a中的所有字段都与新建ClickHouse数据表的列建立映射关系。
S42、提取索引A中各文档的JSON Schema的properties中的字段信息,根据提取的字段信息组织建表SQL新建一个ClickHouse数据表。由于索引A中包括了文档a,在提取索引A中各文档的字段信息时必然后提取文档a的所有字段信息。假设提取的字段信息如表2所示,则根据提取的字段信息组织的建表SQL如下:
通过以上SQL命令即可新建一个包括表2中所有JSON字段(即索引A中文档的所有JSON字段)的ClickHouse数据表book。
S43、记录索引A中文档的JSON字段与新建的数据表book的列的映射关系,重新形成索引A的元数据。例如,在上述例子中,索引A的文档的JSON字段与新建的ClickHouse数据表book的列的映射关系如表5所示:
表5
ES索引 | ES字段 | CK表名称 | CK列名称 | 数据类型 | 备注 |
索引A | id | book | id | 整数 | 书本编号 |
索引A | name | book | name | 文本 | 书本名称 |
索引A | category | book | category | 文本数组 | 分类标签 |
索引A | author | book | author | 文本 | 作者 |
索引A | store_count | book | store_count | 整数 | 库存剩余数量 |
索引A | sell_count | book | sell_count | 整数 | 已销售数量 |
索引A | price | book | price | 浮点数 | 单价 |
S5、将ElasticSearch中索引A所有文档的数据逐一写入新建的数据表book。由于数据表book为新建,之前写入ElasticSearch索引A中的文档的数据并未同步到数据表B。因此需要将之前文档数据同步到数据表book以便于查询和分析。
本步骤具体可包括以下子步骤:
S51、获取索引A所有文档的JSON数据。可采用ElasticSearch的数据查询接口Scroll API查询索引A中的现有文档,获取的返回结果为索引A所有文档的JSON集合,从而获取索引A所有文档的JSON数据。
S52、遍历JSON集合,逐条提取每一文档的JSON数据,并遍历文档的JSON Schema的properties数据,提取properties数据中每一字段的数据并写入数据表book的对应列中。
S6、使ClickHouse数据表的数据与ElasticSearch的数据同步。由于ClickHouse和ElasticSearch在数据处理中各有优势,通过使ClickHouse数据表的数据与ElasticSearch的数据同步,可综合ElasticSearch的文本检索优势和ClickHouse的大数据分析能力。
S7、利用结构化工具通过ClickHouse数据表对存储的数据进行查询和分析,具有在线实时查询、完整的DBMS、非常完善的SQL和函数支持、支持海量数据,支持高可用。数据分析人员或软件研发人员可以使用SQL和函数完成自定义的查询,从而充分利用ClickHouse的大数据分析能力,方便进行数据查询和分析。所述结构化工具优选为结构化SQL或BI工具。
本实施中,采用JSON Schema解析JSON,提取数据和元数据并完成结构化存储,可以充分利用成熟的技术和数据科学工具进行数据分析与展示。在实际的数据分析工作中,结构化存储可以使用SQL便捷的进行数据的查询分析,高效的完成软件查询分析业务。通过ElasticSearch数据同步写入ClickHouse关系数据库的方法,可以充分发挥ElasticSearch的文本检索优势和ClickHouse的大数据分析能力,通过查询元数据直接获取数据的关联和结构,按照业务查询分析需求,动态组织查询、统计、关联、聚合SQL语句,执行SQL语句,获取目标分析结果。从而能够快速实现数值型数据的查询分析,减少业务耦合和依赖,便于实现工业互联网平台通用业务模型的数据的通用报表和看板等功能。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种基于ElasticSearch的数据结构化分析方法,其特征在于,包括以下步骤:
S1、分析待写入ElasticSearch的文档的JSON数据,构建相应的JSON Schema;
S2、在待写入文档的目标索引的元数据中检测是否存在与待写入文档提取的JSON字段的字段信息相关联的ClickHouse数据表;如果存在则执行S3步骤;否则,执行S4步骤;
S3、提取待写入文档的各JSON字段的数据信息,将数据信息按照字段与ClickHouse数据表的列的映射关系写入ClickHouse数据表,并将待写入文档写入目标索引中;
S4、在目标索引根据待写入文档及该索引中各文档的JSON字段新建ClickHouse数据表,并重新形成目标索引的元数据;
S5、将ElasticSearch中该目标索引所有文档的数据逐一写入新建的ClickHouse数据表;
S6、使ClickHouse数据表的数据与ElasticSearch的数据同步;
S7、利用结构化工具通过ClickHouse数据表对存储的数据进行查询和分析。
2.根据权利要求1所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述S1步骤具体包括以下子步骤:
S11、分析待写入文档的JSON数据,获取数据的字段信息;
S12、获取JSON的JSON Schema数据,构建相应的JSON Schema。
3.根据权利要求2所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述S2步骤包括:
S21、从元数据中查询索引A的ClickHouse数据表,如果查询到索引A的ClickHouse数据表,则执行S22步骤;否则,执行S26步骤;
S22、获取ClickHouse数据表的列与索引A的字段的映射关系;
S23、逐一将文档a的各字段的字段信息与数据表B的列映射的字段的字段信息进行比较,如果文档a的字段的字段信息与数据表B中的一列映射的字段的字段信息相同,则判定该字段与数据表B的列之间建立了映射关系;
S24、判断文档a的所有字段是否均与数据表B中的列建立了映射关系,如果文档a的所有字段均与数据表B的列建立了映射关系,则执行S25步骤;否则,执行S26步骤。
S25、判定数据表B为文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S3步骤;
S26、判定不存在与文档a提取的JSON字段的字段信息相关联的ClickHouse数据表;执行S4步骤。
4.根据权利要求2所述的基于ElasticSearch的数据结构化分析方法,其特征在于,在所述S3步骤中,提取待写入文档的各JSON字段的数据信息,将数据信息按照字段与ClickHouse数据表的列的映射关系写入ClickHouse数据表包括:
S31、遍历待写入文档的JSON Schema的properties数据,从properties数据中提取待写入文档的各JSON字段的数据信息;
S32、按照字段与ClickHouse数据表的列的映射关系,通过SQL将各JSON字段的数据信息写入ClickHouse数据表;
S33、执行数据查询语句,验证数据写入是否正确。
5.根据权利要求2所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述S4步骤包括:
S41、将待写入文档写入目标索引中;
S42、提取目标索引中各文档的JSON Schema的properties中的字段信息,组织建表SQL新建一个ClickHouse数据表;
S43、记录目标索引中文档的JSON字段与相应的ClickHouse数据表的列的映射关系,重新形成目标索引的元数据。
6.根据权利要求2所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述S5步骤包括:
S51、获取索引A所有文档的JSON数据;
S52、逐条提取每一文档的JSON数据,并遍历文档的JSON Schema的properties数据,提取properties数据中每一字段的数据并写入新建的ClickHouse数据表的对应列中。
7.根据权利要求6所述的基于ElasticSearch的数据结构化分析方法,其特征在于,获取目标索引所有文档的JSON数据的方法为:
使用ElasticSearch的数据查询接口ScrollAPI查询索引A的所有文档,从查询的返回结果获取目标索引的JSON集合。
8.根据权利要求1所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述元数据包括ElasticSearch的索引名称、索引的字段名称、索引的字段数据类型、索引的ClickHouse数据表名称、ClickHouse数据表的列名称和ClickHouse数据表的列数据类型。
9.根据权利要求8所述的基于ElasticSearch的数据结构化分析方法,其特征在于,在执行所述S1步骤之前,先建立ElasticSearch各索引的元数据,具体包括以下步骤:
S101、在ElasticSearch的索引中提取各文档的JSON数据的字段信息构建JSONSchema;所述字段信息包括字段名称和字段数据类型;
S102、根据提取的字段信息建立索引的ClickHouse数据表,使索引中文档的JSON字段与ClickHouse数据表的列形成映射关系;
S103、记录索引中文档的JSON字段和关联的ClickHouse数据表的列的映射关系,形成索引的元数据。
10.根据权利要求1所述的基于ElasticSearch的数据结构化分析方法,其特征在于,所述结构化工具为结构化SQL或BI工具。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435176.6A CN114064660B (zh) | 2021-11-29 | 2021-11-29 | 基于ElasticSearch的数据结构化分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111435176.6A CN114064660B (zh) | 2021-11-29 | 2021-11-29 | 基于ElasticSearch的数据结构化分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114064660A true CN114064660A (zh) | 2022-02-18 |
CN114064660B CN114064660B (zh) | 2022-06-21 |
Family
ID=80276965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111435176.6A Active CN114064660B (zh) | 2021-11-29 | 2021-11-29 | 基于ElasticSearch的数据结构化分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064660B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116342123A (zh) * | 2023-05-30 | 2023-06-27 | 国网汇通金财(北京)信息科技有限公司 | 一种硬件钱包的数据读取的方法及装置 |
CN117149914A (zh) * | 2023-10-27 | 2023-12-01 | 成都优卡数信信息科技有限公司 | 一种基于ClickHouse的存储方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061739A (zh) * | 2019-12-17 | 2020-04-24 | 医渡云(北京)技术有限公司 | 海量医疗数据的入库方法及装置、电子设备、存储介质 |
US20200379948A1 (en) * | 2019-06-03 | 2020-12-03 | EMC IP Holding Company LLC | Indexes and queries for files by indexing file directories |
CN112650759A (zh) * | 2020-12-30 | 2021-04-13 | 中国平安人寿保险股份有限公司 | 数据查询方法、装置、计算机设备及存储介质 |
CN113282393A (zh) * | 2021-06-04 | 2021-08-20 | 银盛支付服务股份有限公司 | 一种解决面向多个画像标签作业调度任务的方法 |
CN113407548A (zh) * | 2021-08-18 | 2021-09-17 | 南京网觉软件有限公司 | 基于ClickHouse字典表的大数据查询方法、***和介质 |
-
2021
- 2021-11-29 CN CN202111435176.6A patent/CN114064660B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200379948A1 (en) * | 2019-06-03 | 2020-12-03 | EMC IP Holding Company LLC | Indexes and queries for files by indexing file directories |
CN111061739A (zh) * | 2019-12-17 | 2020-04-24 | 医渡云(北京)技术有限公司 | 海量医疗数据的入库方法及装置、电子设备、存储介质 |
CN112650759A (zh) * | 2020-12-30 | 2021-04-13 | 中国平安人寿保险股份有限公司 | 数据查询方法、装置、计算机设备及存储介质 |
CN113282393A (zh) * | 2021-06-04 | 2021-08-20 | 银盛支付服务股份有限公司 | 一种解决面向多个画像标签作业调度任务的方法 |
CN113407548A (zh) * | 2021-08-18 | 2021-09-17 | 南京网觉软件有限公司 | 基于ClickHouse字典表的大数据查询方法、***和介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116342123A (zh) * | 2023-05-30 | 2023-06-27 | 国网汇通金财(北京)信息科技有限公司 | 一种硬件钱包的数据读取的方法及装置 |
CN116342123B (zh) * | 2023-05-30 | 2023-08-18 | 国网汇通金财(北京)信息科技有限公司 | 一种硬件钱包的数据读取的方法及装置 |
CN117149914A (zh) * | 2023-10-27 | 2023-12-01 | 成都优卡数信信息科技有限公司 | 一种基于ClickHouse的存储方法 |
CN117149914B (zh) * | 2023-10-27 | 2024-01-26 | 成都优卡数信信息科技有限公司 | 一种基于ClickHouse的存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114064660B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109669934B (zh) | 一种切合电力客服业务的数据仓库***及其构建方法 | |
US10860598B2 (en) | Systems and methods for interest-driven business intelligence systems including event-oriented data | |
US8650181B2 (en) | OLAP execution model using relational operations | |
CN102270225B (zh) | 数据变更日志监控方法和数据变更日志监控装置 | |
CN110618983A (zh) | 基于json文档结构的工业大数据多维分析与可视化方法 | |
CN114064660B (zh) | 基于ElasticSearch的数据结构化分析方法 | |
WO2016004813A1 (zh) | 数据存储方法、查询方法及设备 | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
US9785725B2 (en) | Method and system for visualizing relational data as RDF graphs with interactive response time | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
CN102270232A (zh) | 一种存储优化的语义数据查询*** | |
CN110837520A (zh) | 一种数据处理方法、平台及*** | |
US20060235820A1 (en) | Relational query of a hierarchical database | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
CN106503040B (zh) | 适用sql查询方法的kv数据库及其创建方法 | |
US7707144B2 (en) | Optimization for aggregate navigation for distinct count metrics | |
US20140310262A1 (en) | Multiple schema repository and modular database procedures | |
CN116719822B (zh) | 一种海量结构化数据的存储方法及*** | |
CN108241624A (zh) | 一种查询脚本的生成方法及装置 | |
CN110688386A (zh) | 面向新型供电轨道交通大数据的分布式列族数据索引方法 | |
CN113448966B (zh) | 一种订单类数据多维度分表*** | |
Sheng et al. | Fast Access and Retrieval of Big Data Based on Unique Identification. | |
RU2688229C1 (ru) | Способ агрегирования и преобразования данных и устройство для его реализации | |
CN104657370A (zh) | 一种实现多维立方体关联的方法和装置 | |
CN117931802A (zh) | 一种多数据源的高速写入读取***及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230602 Address after: Room 1-1-18, Unit 1, Building 4, No. 1580 Zhiyun Avenue, Yudong Street, Banan District, Chongqing, 401320 Patentee after: Chongqing Yunfeng Technology Co.,Ltd. Address before: 408300 building a, 59 Chaoyang Road, Dianjiang Industrial Park, Chongqing Patentee before: Chongqing Yuncheng Internet Technology Co.,Ltd. |