官方文档:https://elasticsearch-py.readthedocs.io/en/master/

  1、介绍

    python提供了操作ElasticSearch 接口,因此要用python来操作ElasticSearch,首先要安装python的ElasticSearch包,用命令 pip install elasticsearch安装或下载安装:https://pypi.python.org/pypi/elasticsearch/5.4.0

  2、创建索引

    假如创建索引名称为ott,类型为ott_type的索引,该索引中有五个字段:

    title:存储中文标题,

    date:存储日期格式(2017-09-08),

    keyword:存储中文关键字,

    source:存储中文来源,

    link:存储链接,

    创建映射:

    

    

  3、索引数据

    

    批量索引

    利用bulk批量索引数据

    

  4、查询索引

    

  5、删除数据

    

  6、完整代码


#coding:utf8
import os
import time
from os import walk
import CSVOP
from datetime import datetime
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulkclass ElasticObj:def __init__(self, index_name,index_type,ip ="127.0.0.1"):''':param index_name: 索引名称:param index_type: 索引类型'''self.index_name =index_nameself.index_type = index_type# 无用户名密码状态#self.es = Elasticsearch([ip])#用户名密码状态self.es = Elasticsearch([ip],http_auth=('elastic', 'password'),port=9200)def create_index(self,index_name="ott",index_type="ott_type"):'''创建索引,创建索引名称为ott,类型为ott_type的索引:param ex: Elasticsearch对象:return:'''#创建映射_index_mappings = {"mappings": {self.index_type: {"properties": {"title": {"type": "text","index": True,"analyzer": "ik_max_word","search_analyzer": "ik_max_word"},"date": {"type": "text","index": True},"keyword": {"type": "string","index": "not_analyzed"},"source": {"type": "string","index": "not_analyzed"},"link": {"type": "string","index": "not_analyzed"}}}}}if self.es.indices.exists(index=self.index_name) is not True:res = self.es.indices.create(index=self.index_name, body=_index_mappings)print resdef IndexData(self):es = Elasticsearch()csvdir = 'D:/work/ElasticSearch/exportExcels'filenamelist = []for (dirpath, dirnames, filenames) in walk(csvdir):filenamelist.extend(filenames)breaktotal = 0for file in filenamelist:csvfile = csvdir + '/' + fileself.Index_Data_FromCSV(csvfile,es)total += 1print totaltime.sleep(10)def Index_Data_FromCSV(self,csvfile):'''从CSV文件中读取数据,并存储到es中:param csvfile: csv文件,包括完整路径:return:'''list = CSVOP.ReadCSV(csvfile)index = 0doc = {}for item in list:if index > 1:#第一行是标题doc['title'] = item[0]doc['link'] = item[1]doc['date'] = item[2]doc['source'] = item[3]doc['keyword'] = item[4]res = self.es.index(index=self.index_name, doc_type=self.index_type, body=doc)print(res['created'])index += 1print indexdef Index_Data(self):'''数据存储到es:return:'''list = [{   "date": "2017-09-13","source": "慧聪网","link": "http://info.broadcast.hc360.com/2017/09/130859749974.shtml","keyword": "电视","title": "付费 电视 行业面临的转型和挑战"},{   "date": "2017-09-13","source": "中国文明网","link": "http://www.wenming.cn/xj_pd/yw/201709/t20170913_4421323.shtml","keyword": "电视","title": "电视 专题片《巡视利剑》广获好评:铁腕反腐凝聚党心民心"}]for item in list:res = self.es.index(index=self.index_name, doc_type=self.index_type, body=item)print(res['created'])def bulk_Index_Data(self):'''用bulk将批量数据存储到es:return:'''list = [{"date": "2017-09-13","source": "慧聪网","link": "http://info.broadcast.hc360.com/2017/09/130859749974.shtml","keyword": "电视","title": "付费 电视 行业面临的转型和挑战"},{"date": "2017-09-13","source": "中国文明网","link": "http://www.wenming.cn/xj_pd/yw/201709/t20170913_4421323.shtml","keyword": "电视","title": "电视 专题片《巡视利剑》广获好评:铁腕反腐凝聚党心民心"},{"date": "2017-09-13","source": "人民电视","link": "http://tv.people.com.cn/BIG5/n1/2017/0913/c67816-29533981.html","keyword": "电视","title": "中国第21批赴刚果(金)维和部隊启程--人民 电视 --人民网"},{"date": "2017-09-13","source": "站长之家","link": "http://www.chinaz.com/news/2017/0913/804263.shtml","keyword": "电视","title": "电视 盒子 哪个牌子好? 吐血奉献三大选购秘笈"}]ACTIONS = []i = 1for line in list:action = {"_index": self.index_name,"_type": self.index_type,"_id": i, #_id 也可以默认生成,不赋值"_source": {"date": line['date'],"source": line['source'].decode('utf8'),"link": line['link'],"keyword": line['keyword'].decode('utf8'),"title": line['title'].decode('utf8')}}i += 1ACTIONS.append(action)# 批量处理success, _ = bulk(self.es, ACTIONS, index=self.index_name, raise_on_error=True)print('Performed %d actions' % success)def Delete_Index_Data(self,id):'''删除索引中的一条:param id::return:'''res = self.es.delete(index=self.index_name, doc_type=self.index_type, id=id)print resdef Get_Data_Id(self,id):res = self.es.get(index=self.index_name, doc_type=self.index_type,id=id)print(res['_source'])print '------------------------------------------------------------------'## # 输出查询到的结果for hit in res['hits']['hits']:# print hit['_source']print hit['_source']['date'],hit['_source']['source'],hit['_source']['link'],hit['_source']['keyword'],hit['_source']['title']def Get_Data_By_Body(self):# doc = {'query': {'match_all': {}}}doc = {"query": {"match": {"keyword": "电视"}}}_searched = self.es.search(index=self.index_name, doc_type=self.index_type, body=doc)for hit in _searched['hits']['hits']:# print hit['_source']print hit['_source']['date'], hit['_source']['source'], hit['_source']['link'], hit['_source']['keyword'], \hit['_source']['title']obj =ElasticObj("ott","ott_type",ip ="47.93.117.127")
# obj = ElasticObj("ott1", "ott_type1")# obj.create_index()
obj.Index_Data()
# obj.bulk_Index_Data()
# obj.IndexData()
# obj.Delete_Index_Data(1)
# csvfile = 'D:/work/ElasticSearch/exportExcels/2017-08-31_info.csv'
# obj.Index_Data_FromCSV(csvfile)
# obj.GetData(es)

转自:https://www.cnblogs.com/shaosks/p/7592229.html

ElasticSearch python基本操作相关推荐

  1. ElasticSearch Python Client ReadTimeout

    ElasticSearch Python Client ReadTimeout ElasticSearch Python Client API,Bulk操作时,当ElasticSearch服务端的性能 ...

  2. Elasticsearch rest-high-level-client 基本操作

    Elasticsearch rest-high-level-client 基本操作 本篇主要讲解一下 rest-high-level-client 去操作 Elasticsearch , 虽然这个客户 ...

  3. ElasticSearch索引基本操作POST PUT GET DELETE

    ElasticSearch索引基本操作 Rest风格说明 基本测试 1.PUT创建一个索引 2.指定类型 3.PUT创建索引以及指定字段的类型 4. GET获取索引信息 5.索引 默认的指定类型 6. ...

  4. Python—SJ—实验1—Python基本操作

    Python-SJ-实验1-Python基本操作 2020.1.9日 共五个部分 ①总体实验内容的文字介绍 ②实验的未作答版本 ③实验报告模板 ④实验作答版代码(不确保正确,仅供参考) ⑤实验报告(我 ...

  5. python基本操作之字典

    python基本操作之字典 一.创建字典 创建字典操作很简单,只需要记住使用大括号即可(python中的三种常用数据类型:列表 - [],元组 - (),字典 - {}) #创建一个空字典 dic = ...

  6. Elasticsearch(三) Python 使用 elasticsearch 的基本操作

    参考文章:https://cuiqingcai.com/6214.html 一. python 安装 elasticsearch标准库 1. pip install elasticsearch 2. ...

  7. elasticsearch python API

    yuanwen Elasticsearch启动 # 进入到elasticsearch的bin目录 cd /.../.../elasticsearch-x.x.x/bin # 启动elasticsear ...

  8. 搜索引擎 (1):ElasticSearch + python (理论+ 实践)

    Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索 ...

  9. python删除文件夹无法访问_零基础小白必看:python基本操作-文件、目录及路径

    使用python的os模块,简单方便完成对文件夹.文件及路径的管理与访问操作. 1 前言 在最近开发中,经常需要对文件进行读取.遍历.修改等操作,想要快速.简单的完成这些操作,我选择用 python ...

最新文章

  1. python功能性爬虫案例_Python使用requests及BeautifulSoup构建爬虫实例代码
  2. hive mysql 远程_ubuntu中为hive配置远程MYSQL database
  3. Android自定义Adapter的ListView的思路及代码
  4. java 学习(一)冒泡排序
  5. MySQL这三道常见的面试题,你有被问过吗?
  6. java opencv4.5 人脸对比_2020大数据Java面试总结(未完待续)
  7. pdo-mysql_PHP: MySQL (PDO) - Manual
  8. 作业帮口算批改怎么开 作业帮口算批改如何用
  9. 微课|中学生可以这样学Python(例5.8):凯撒加密
  10. php_connect_nonb,net2ftp无法显示文件列表输出为空
  11. Javascript中===和==的区别
  12. python globals()
  13. unity 入门学习之(二)脚本学习
  14. 图像降噪算法——从BM3D到VBM4D
  15. 黑马JavaEE云计算大数据全套视频 JavaEE云计算开发全套视频教程 超全精华班 82G
  16. 紫书刷题记录 UVa12100 打印队列
  17. 用计算机算账老是出负数是怎么回事,结存数量为负数是什么意思
  18. dataframe读取以文本形式储存的excel中的数字
  19. 定义一个int型变量
  20. 笔记 ~ 第二章 - 2.2 关系操作、关系完整性、关系代数、关系演算

热门文章

  1. sql复合索引使用和注意事项
  2. 深度神经网络中基于提前退出的快速推理方法的研究与实现
  3. 两天一夜厦门之旅,这次不去人潮拥挤的鼓浪屿
  4. 面了个 Java 实习生,小伙很优秀!
  5. vscode配置c/c++环境windows常见问题
  6. 汉字的书写效果的实现
  7. 识别您的英特尔® 无线适配器和 Wi-Fi 驱动程序版本号
  8. python实现数据爬取-清洗-持久化存储-数据平台可视化
  9. “流血”的物流,“补血”的德邦
  10. 网优谷与你一起嗅出未来互联网新趋势~