专栏:011:Elasticsearch 的使用

001.jpg

用理工科思维看待这个世界

系列爬虫专栏

崇尚的学习思维是:输入,输出平衡,且平衡点不断攀升。

希望我眼中的世界,是个温暖纯真的世界.

今天的主题是:elasticsearch的使用


0:框架

序号 内容 说明
01 概念 --
02 安装及配置 --
03 使用 --
04 实战 --
05 总结及说明 --

1:概念

  • Elasticsearch
    Elasticsearch 是一个实时分布式搜索和分析引擎。

  • 特点
    分布式的实时文件存储,每个字段都被索引并可被搜索
    分布式的实时分析搜索引擎
    可以扩展到上百台服务器,处理PB级结构化或非结构化数据

  • 索引 index (数据库)
    Elasticsearch 中存储数据的行为。

  • 文档 type (表)

  • 对比

Relation DB   -> Databases -> tables -> rows      -> columns
Elasticsearch -> Indices   -> Types  -> Documents -> Fields

2:安装

windows 平台为例

  • 下载Elasticsearch 官网 解压安装
  • 下载JAVA官网 安装
  • 配置JAVA环境变量
    • 环境变量
      • 新建系统变量JAVA_HOME 和 CLASSPATH
      • 变量名为:JAVA_HOME
      • 变量值:C:\Program Files\Java\jdk1.8.0_65
      • 变量名:CLASSPATH
      • 变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    • 选择“系统变量”中变量名为'path' 的环境变量,添加JAVA绝对路径
      • 变量名:path
      • 变量值:C:\Program Files\Java\jdk1.8.0_65\bin;C:\Program Files\Java\jre1.8.0_65

验证是否配置正确JAVA环境:命令提示符下:javac

001.png
  • 运行Elasticsearch
    目录下,命令提示符:./bin/elsticsearch
    浏览器中输入:http://localhost:9200/
002.png
  • 安装插件:
    elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序
    目录下,命令提示符:.\plugin install mobz/elasticsearch-head
    浏览器中输入:http://localhost:9200/_plugin/head/
003.png
  • 目录结构
目录 说明
bin 运行Elasticsearch 实例和插件管理所需的脚本
config 配置文件所在目录
lib Elasticsearch所使用的库
data 存储ElasticSearch所使用的所有数据
logs 实例运行期间产生的事件和错误信息的文件
plugins 用于存储安装的插件
work 临时文件

更多操作官方网站


3:使用

在python中的使用为例
需要安装elasticsearch 库


# 向es中插入一条数据
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) # 插入数据
print(res['created'])

效果:

004.png
# 查询所有的test-index 下的数据
res = es.search(index="test-index", body={"query": {"match_all": {}}}) # 查询数据,返回的是JSON格式的数据
print("Got %d Hits:" % res['hits']['total'])
for hit in res['hits']['hits']:
    print("%(timestamp)s %(author)s: %(text)s" % hit["_source"])

# output 上文插入的数据
Got 1 Hits:
2016-05-06T10:07:40.480466 kimchy: Elasticsearch: cool. bonsai cool.

管理工具上查询显示:同样是刚才那条数据

005.png

4:实战

核心代码参见专栏:009

提供两种方式将抓取到的电影数据插入es中

# 第一种方式:content 是每部电影的数据:包括电影名,评分数,导演等
def save_to_es(self, content):
    global id
    data = json.dumps(content)
    url = "http://localhost:9200/exercise/douban/" + str(id)
    body = requests.post(url, data)
    id += 1
#......
if __name__ == "__main__":
    url = "https://movie.douban.com/top250?start=0&filter="
    Start = DouBanTop()
    urls = Start.urls()
    for one_url in urls:
        one_page_content = Start.get_content(one_url)
        all_data = Start.content_json(one_page_content)
        for one in all_data:
            Start.save_to_es(one)
# 第二种使用elasticsearch库
def save_to_es2(self, content):
    es = Elasticsearch()
    global id
    data = json.dumps(content)
    res = es.index(index="exercise", doc_type="douban", id = id, body = data)
    id +=1
#............
if __name__ == "__main__":
    url = "https://movie.douban.com/top250?start=0&filter="
    Start = DouBanTop()
    urls = Start.urls()
    for one_url in urls:
        one_page_content = Start.get_content(one_url)
        all_data = Start.content_json(one_page_content)
        for one in all_data:
            Start.save_to_es2(one)

效果显示:

006.png

查询效果显示:

007.png

完整版代码代码


5:参考及总结

参考文献:

  1. elasticsearch文档
  2. CSDN博客
  3. 官方网站

Github:github
搭建了一个博客:博客

IT初学者.


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 1、ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容来自:http://bai...
    螺旋上升的世界阅读 3,000评论 0 20
  • 《钟点工》 她始终说很少的话 擦完某个房间桌子的时候 可能会去抽一颗烟 有时会见烟圈 一环又一环 那迷雾像极了她游...
    qianye812阅读 191评论 0 0
  • 存在价值:待遇vs.增值 公司聘请我们过来是为企业增值、解决问题的。企业的成本增长速度曲线,大部分员工的成本曲线基...
    阿木土阅读 110评论 0 0
  • 任小柒阅读 200评论 2 3
  • 一个人 从始至终 都是一段故事 有喜 有泪 有苦 有醉 徜徉在自已的故事里 回味 沉睡 别具一番滋味
    L秋水伊人阅读 146评论 0 0