es 数据库
Elasticsearch是一个开源的高扩展性搜索引擎,它可以快速地存储、搜索和分析大量的数据。
使用Python语言和Elasticsearch,可以轻松地创建和操作“数据库”和“数据库表”,而且具备分布式和高扩展性的特点,适用于大规模数据存储与搜索场景。
1. 创建“数据库” | 索引(index)
在Elasticsearch中,“数据库”被封装为索引(Index)
,可以通过以下代码来创建一个索引:
python"># 首先导入了Elasticsearch模块
from elasticsearch import Elasticsearch
# 创建es数据库句柄
es = Elasticsearch()
# 接着定义了一个索引名称
index_name = "myindex"
# 通过`es.indices.exists()`方法来判断索引是否存在
if not es.indices.exists(index_name):
# 如果索引不存在,则通过`es.indices.create()`方法来创建索引
es.indices.create(index=index_name)
2. 创建“数据库表” | 文档类型(doc_type)
在Elasticsearch中,每个索引可以包含多个文档类型(Type)
,可以通过以下代码来创建一个文档类型:
python"># `es.indices.put_mapping()`方法,在指定的索引上创建了一个名称为`type_name`的文档类型,并定义了文档类型中的字段
es.indices.put_mapping(
index=index_name, # 在指定的索引index_name上创建
body={ # 文档中的字段
"properties": {
"field1": {
"type": "keyword"
},
"field2": {
"type": "text"
}
}
},
doc_type=type_name # 文档名称为type_name
)
3. 创建“数据库表字段”
在上述代码中,通过body
参数定义了文档类型中的字段。其中,"type": "keyword"
表示该字段类型为字符串,且不需要分词。"type": "text"
表示该字段类型为字符串,且需要分词。
4. 常用的ES数据库操作
插入数据 | index | res [‘created’]
python">doc_id = 1
doc = {
"field1": "value1",
"field2": "value2"
}
res = es.index(index=index_name, doc_type=type_name, id=doc_id, body=doc)
if res["created"]:
print("Document created successfully")
查询数据 | get | res[’ _source’]
python">res = es.get(index=index_name, doc_type=type_name, id=doc_id)
doc = res["_source"]
更新数据 | update | res[‘result’]
python">doc_id = n;
doc = {
"field1": "new_value1"
}
res = es.update(index=index_name, doc_type=type_name, id=doc_id, body={"doc": doc})
if res["result"] == "updated":
print("Document updated successfully")
删除数据 | delete | res[“result”]
python">res = es.delete(index=index_name, doc_type=type_name, id=doc_id)
if res["result"] == "deleted":
print("Document deleted successfully")