【python Elasticsearch】python 简单操作Elasticsearch

windows本地安装ES,见链接:https://blog.csdn.net/u013421629/article/details/84136744

python提供了操作ElasticSearch 接口,因此要用python来操作ElasticSearch,首先要安装python的ElasticSearch包

pip install elasticsearch

官网提供的python操作ES的简单例子是:

# -*- coding:utf-8 -*-

from datetime import datetime

from elasticsearch import Elasticsearch


es = Elasticsearch()
# 创建索引
es.indices.create(index='my-index', ignore=400)

es.index(index="my-index", doc_type="test-type", id=42, body={"any": "data", "timestamp": datetime.now()})

# 查看数据
kk=es.get(index="my-index", doc_type="test-type", id=42)['_source']


# 打印数据
print(kk)

打印内容:

{'any': 'data', 'timestamp': '2018-11-16T11:51:52.820416'}

Process finished with exit code 0

在浏览器界面我们看到了刚刚创建的索引和数据

在这里插入图片描述

例子2:

# -*- coding:utf-8 -*-

from datetime import datetime
from elasticsearch import Elasticsearch
es = Elasticsearch()


# 内容
doc = {
    'author': 'kimchy',
    'text': 'Elasticsearch: cool. bonsai cool.',
    'timestamp': datetime.now(),
}

# 创建索引
res = es.index(index="test-index", doc_type='tweet', id=1, body=doc)


# 通过索引获取数据
res = es.get(index="test-index", doc_type='tweet', id=1)
print(res['_source'])

es.indices.refresh(index="test-index")

# 搜索
res = es.search(index="test-index", body={"query": {"match_all": {}}})
print("Got %d Hits:" % res['hits']['total'])
for hit in res['hits']['hits']:
    print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])

运行结果:

{'author': 'kimchy', 'timestamp': '2018-11-16T12:09:08.729595', 'text': 'Elasticsearch: cool. bonsai cool.'}
Got 1 Hits:
2018-11-16T12:09:08.729595 kimchy: Elasticsearch: cool. bonsai cool.

Process finished with exit code 0

在这里插入图片描述

# -*- coding:utf-8 -*-

from elasticsearch import Elasticsearch

es = Elasticsearch()
# # 创建一个名为 news 的索引
# result = es.indices.create(index='news', ignore=400)
# print(result)

# 删除索引
# result = es.indices.delete(index='news', ignore=[400, 404])
# print(result)

# # 插入数据
#
# data = {'title': '美国留给伊拉克的是个烂摊子吗', 'url': 'http://view.news.qq.com/zt2011/usa_iraq/index.htm'}
#
# # 需要指定id
# result = es.create(index='news', doc_type='politics', id=1, body=data)
# print(result)

# 不需要指定id,系统自动创建
# es.index(index='news', doc_type='politics', body=data)


# # 跟新数据
#
# data = {
#     'title': '美国留给伊拉克的是个烂摊子吗',
#     'url': 'http://view.news.qq.com/zt2011/usa_iraq/index.htm',
#     'date': '2011-12-16'
# }
# result = es.update(index='news', doc_type='politics', body=data, id=1)
# print(result)
#
# # 另外更新操作其实利用 index() 方法同样可以做到
# # es.index(index='news', doc_type='politics', body=data, id=1)
#
# # 可以看到,index() 方法可以代替我们完成两个操作,如果数据不存在,那就执行插入操作,如果已经存在,那就执行更新操作,非常方便。
#
#
# # 删除数据
#
# result = es.delete(index='news', doc_type='politics', id=1)
# print(result)


# 插入数据
datas = [
    {
        'title': '美国留给伊拉克的是个烂摊子吗',
        'url': 'http://view.news.qq.com/zt2011/usa_iraq/index.htm',
        'date': '2011-12-16'
    },
    {
        'title': '公安部:各地校车将享最高路权',
        'url': 'http://www.chinanews.com/gn/2011/12-16/3536077.shtml',
        'date': '2011-12-16'
    },
    {
        'title': '中韩渔警冲突调查:韩警平均每天扣1艘中国渔船',
        'url': 'https://news.qq.com/a/20111216/001044.htm',
        'date': '2011-12-17'
    },
    {
        'title': '中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首',
        'url': 'http://news.ifeng.com/world/detail_2011_12/16/11372558_0.shtml',
        'date': '2011-12-18'
    }
]

for data in datas:
    es.index(index='news2', doc_type='politics', body=data)


# 这里我们指定了四条数据,都带有 title、url、date 字段,然后通过 index() 方法将其插入 Elasticsearch 中,索引名称为 news,类型为 politics。

# 查询数据
result = es.search(index='news2', doc_type='politics')
print(result)

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页