前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >专栏:011:Elasticsearch 的使用

专栏:011:Elasticsearch 的使用

作者头像
谢伟
发布2018-06-06 11:47:28
5260
发布2018-06-06 11:47:28
举报
文章被收录于专栏:GopherCoderGopherCoder

001.jpg

用理工科思维看待这个世界 系列爬虫专栏 崇尚的学习思维是:输入,输出平衡,且平衡点不断攀升。 希望我眼中的世界,是个温暖纯真的世界. 今天的主题是:elasticsearch的使用


0:框架

序号

内容

说明

01

概念

--

02

安装及配置

--

03

使用

--

04

实战

--

05

总结及说明

--


1:概念

  • Elasticsearch Elasticsearch 是一个实时分布式搜索和分析引擎。
  • 特点 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据
  • 索引 index (数据库) Elasticsearch 中存储数据的行为。
  • 文档 type (表)
  • 对比
代码语言:javascript
复制
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 库

代码语言:javascript
复制
# 向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

代码语言:javascript
复制
# 查询所有的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中

代码语言:javascript
复制
# 第一种方式: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)
代码语言:javascript
复制
# 第二种使用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初学者.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.05.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0:框架
  • 1:概念
  • 2:安装
  • 3:使用
  • 4:实战
  • 5:参考及总结
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档