基于JSON表模式描述符生成ES索引、加载数据和提取数据。
项目描述
tableschema-elasticsearch-py
基于Table Schema描述符生成和加载数据库索引。
功能
- 实现
tableschema.Storage
接口
内容
入门指南
安装
该软件包使用语义版本控制。这意味着主要版本可能包含破坏性更改。强烈建议在您的 setup/requirements
文件中指定 package
版本范围,例如 package>=1.0,<2.0
。
pip install tableschema-elasticsearch
文档
使用概述
import elasticsearch
import jsontableschema_es
INDEX_NAME = 'testing_index'
# Connect to Elasticsearch instance running on localhost
es=elasticsearch.Elasticsearch()
storage=jsontableschema_es.Storage(es)
# List all indexes
print(list(storage.buckets))
# Create a new index
storage.create('test', {
'fields': [
{
'name': 'num',
'type': 'number'
}
]
}
)
# Write data to index
l=list(storage.write(INDEX_NAME, ({'num':i} for i in range(1000)), ['num']))
print(len(l))
print(l[:10], '...')
l=list(storage.write(INDEX_NAME, ({'num':i} for i in range(500,1500)), ['num']))
print(len(l))
print(l[:10], '...')
# Read all data from index
storage=jsontableschema_es.Storage(es)
print(list(storage.buckets))
l=list(storage.read(INDEX_NAME))
print(len(l))
print(l[:10])
在此驱动程序中,elasticsearch
用作数据库包装器。我们可以通过这种方式获得存储
from elasticsearch import Elasticsearch
from jsontableschema_elasticsearch import Storage
engine = Elasticsearch()
storage = Storage(engine)
然后我们可以与存储进行交互(在这种情况下,“bucket”是Elasticsearch索引)
storage.buckets # iterator over bucket names
storage.create('bucket', descriptor,
reindex=False,
always_recreate=False,
mapping_generator_cls=None)
# reindex will copy existing documents from an existing index with the same name (in case of a mapping conflict)
# always_recreate will always recreate an index, even if it already exists. default is to update mappings only.
# mapping_generator_cls allows customization of the generated mapping
storage.delete('bucket')
storage.describe('bucket') # return descriptor, not implemented yet
storage.iter('bucket') # yield rows
storage.read('bucket') # return rows
storage.write('bucket', rows, primary_key,
as_generator=False)
# primary_key is a list of field names which will be used to generate document ids
创建索引时,我们总是创建一个具有半随机名称的索引和一个指向它的匹配别名。这允许我们决定在重新创建索引时是否要重新索引文档,或者是否要丢弃现有记录。
映射
创建索引时,将表模式类型转换为ES类型,并为索引生成映射。
模式中的某些特殊属性为生成映射提供了额外信息
array
类型还需要具有es:itemType
属性,该属性指定数组元素的内部数据类型。object
类型还需要具有es:schema
属性,该属性提供了包含在该对象中的内部文档的tableschema(或具有es:enabled=false
以禁用该字段的索引)。
示例
{
"fields": [
{
"name": "my-number",
"type": "number"
},
{
"name": "my-array-of-dates",
"type": "array",
"es:itemType": "date"
},
{
"name": "my-person-object",
"type": "object",
"es:schema": {
"fields": [
{"name": "name", "type": "string"},
{"name": "surname", "type": "string"},
{"name": "age", "type": "integer"},
{"name": "date-of-birth", "type": "date", "format": "%Y-%m-%d"}
]
}
},
{
"name": "my-library",
"type": "array",
"es:itemType": "object",
"es:schema": {
"fields": [
{"name": "title", "type": "string"},
{"name": "isbn", "type": "string"},
{"name": "num-of-pages", "type": "integer"}
]
}
},
{
"name": "my-user-provded-object",
"type": "object",
"es:enabled": false
}
]
}
自定义映射
通过提供自定义映射生成器类(通过mapping_generator_cls
),继承自MappingGenerator类,您应该能够
API参考
存储
Storage(self, es=None)
Elasticsearch表存储。
包实现了Tabular Storage接口(请参阅链接中的完整文档)
仅记录了附加API
参数
- es (对象):ElasticSearch实例
storage.create
storage.create(self, bucket, descriptor, reindex=False, always_recreate=False, mapping_generator_cls=None, index_settings=None)
通过模式创建索引。
参数
- bucket(str):要创建的索引的名称
- descriptor:要创建的索引的描述符
- always_recreate:如果已存在,则删除索引(否则仅更新映射)
- reindex:在映射不匹配的情况下,自动创建新索引并将现有索引迁移到它
- mapping_generator_cls:MappingGenerator的子类
- index_settings:用于索引创建的设置
storage.delete
storage.delete(self, bucket=None)
通过模式删除索引。
参数
- bucket(str):要删除的索引的名称
贡献
推荐的入门方法是创建并激活项目虚拟环境。要将包和开发依赖项安装到活动环境中
$ make install
要运行具有linting和覆盖率的测试
$ make test
变更日志
此处仅描述破坏性和最重要的更改。有关所有发布版本的完整更改日志和文档,请参阅格式良好的提交历史记录。
v1.0
- 初始驱动程序实现
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分发
tableschema-elasticsearch-2.1.0.tar.gz (12.6 kB 查看散列)
构建分发
关闭
tableschema-elasticsearch-2.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bf3bfe1d6815b25eb3c2d3f19b59b0206b1eb24c1a53f9efadf7730fde8e199f |
|
MD5 | 7d42931a2f56ffb0f3794102b13ea966 |
|
BLAKE2b-256 | c014035714701afe4d0298134957227da91d28e9c2b3af91f31d47c0afc32ef2 |
关闭
tableschema_elasticsearch-2.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be68d5feb51651ca2c223a2edd918ee7d8cba32cf1a8bad6bba95e5cda10bc08 |
|
MD5 | b4a349d4d4f248fc648b29c737a8b6bc |
|
BLAKE2b-256 | 48573353bd841c73a75f1bf63541f1057682dd1263afad1c312762fa076ab80f |