专栏: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初学者.


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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