大資料學習[13]:elasticsearch之簡單的python API
很多時間需要通過python來操作ES,在這裡記錄一個基本的方法。
1. 簡單的python API查詢
# coding=utf-8
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts=['elastic:[email protected]*.*8:9200'])
query_all = {
'query': {
'match_all': {}
}
}
# search
print('search:')
res = es.search(index="info", body=query_all)
print(res)
print("Got %d Hits:" % res['hits']['total'])
for hit in res['hits']['hits']:
print("%(keyword)s%(title)s" % hit["_source"])
# get
print('get:')
res = es.get(index="info", doc_type='main', id=2)
print('res:', res)
執行結果:
search:
{'_shards': {'failed': 0, 'skipped': 0, 'total': 5, 'successful': 5}, 'took': 0, 'hits': {'max_score' : 1.0, 'total': 2, 'hits': [{'_id': '2', '_score': 1.0, '_index': 'info', '_source': {'title': ['醋加一寶90歲都不老'], 'keyword': ['補腎', '黑芝麻糊', '三文魚', '紅酒', '養顏']}, '_type': 'main'}, {'_id': '1', '_score': 1.0, '_index': 'info', '_source': {'title': ['部分醫療機構可預約宮頸癌疫苗 專家詳解接種注意事項'], 'keyword': ['HPV', '疫苗', '宮頸癌' , '接種', '感染']}, '_type': 'main'}]}, 'timed_out': False}
Got 2 Hits:
['補腎', '黑芝麻糊', '三文魚', '紅酒', '養顏']['醋加一寶90歲都不老']
['HPV', '疫苗', '宮頸癌', '接種', '感染']['部分醫療機構可預約宮頸癌疫苗 專家詳解接種注意事項']
get:
res: {'_version': 1, 'found': True, '_source': {'title': ['醋加一寶90歲都不老'], 'keyword': ['補腎', '黑芝麻糊', '三文魚', '紅酒', '養顏']}, '_id': '2', '_index': 'info', '_type': 'main'}
2. 資料庫連線錯誤
GET http://192.168.7.38:9200/index/fulltext/_search [status:401 request:0.004s]
elasticsearch.exceptions.AuthenticationException: TransportError(401, 'security_exception', 'missing authentication token for REST request [/index/fulltext/_search]')
這是一個授權問題。
把hosts寫成這樣:elastic:[email protected]*.38:9200
3. python批量操作
# coding=utf-8
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es = Elasticsearch(hosts=['elastic:[email protected]*.*8:9200'])
# 批量索引文件
actions = []
action = {"_index": "kad_info",
"_type": "articles",
"_id": "1",
"_source": {
"article_crawtime": "2017-03-10 15:05:00",
"keywords01": "輔助用藥 蕪湖市 轉化糖電解質注射液",
"keywords02": [{"keyword": "輔助用藥", "weight": 0.9}, {"keyword": "蕪湖市", "weight": 0.8},
{"keyword": "轉化糖電解質注射液", "weight": 0.7}],
"title": ";01又有21個品種進輔助用藥目錄01;"
}}
actions.append(action)
action = {"_index": "kad_info",
"_type": "articles",
"_id": "2",
"_source": {
"article_crawtime": "2017-03-10 15:05:00",
"keywords01": "輔助用藥 蕪湖市 轉化糖電解質注射液",
"keywords02": [{"keyword": "輔助用藥", "weight": 0.9}, {"keyword": "蕪湖市", "weight": 0.8},
{"keyword": "轉化糖電解質注射液", "weight": 0.7}],
"title": ";02又有21個品種進輔助用藥目錄01;"
}}
actions.append(action)
rs = bulk(es, actions=actions)
print('成功插入%d個文件...' % (rs[0]))
執行結果:
成功插入2個文件...
相關推薦
大資料學習[13]:elasticsearch之簡單的python API
很多時間需要通過python來操作ES,在這裡記錄一個基本的方法。 1. 簡單的python API查詢 # coding=utf-8 from elasticsearch import Elasticsearch es = Elasticsear
大資料學習[15]:elasticsearch之同義詞
[ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "來自",
大資料學習階段及內容簡單介紹(二)
大資料學習階段(二) 之前已經寫過一篇《大資料學習階段及內容簡單介紹(一)》,簡單介紹了大資料裡面一些有關Java基礎、Linux基礎、離線計算Hadoop、序列化技術Avro、序列化技術ProtoBuf、協調服務Zookeeper、資料倉庫Hive、資料庫Hbase、日誌採集Flume
大資料學習階段及內容簡單介紹(一)
大資料學習階段(一) Java SE 為什麼要選擇java 零基礎剛接觸大資料的學員都知道,學習大資料課程之前,都需要先熟悉掌握一種計算機程式語言。要知道大資料開發需要程式語言作為基礎,因為大資料的開發基於一些常用的高階語言。大資料中的很多框架都是建立在Java語言的基礎上的,可以
大資料學習[17]--Elasticsearch 5.x 欄位摺疊的使用[轉]
題目:Elasticsearch 5.x 欄位摺疊的使用 作者:medcl URL:https://elasticsearch.cn/article/132 在 Elasticsearch 5.x 有一個欄位摺疊(Field Collapsing,#22337)的功能非常
大資料學習筆記——Spark工作機制以及API詳解
Spark工作機制以及API詳解 本篇文章將會承接上篇關於如何部署Spark分散式叢集的部落格,會先對RDD程式設計中常見的API進行一個整理,接著再結合原始碼以及註釋詳細地解讀spark的作業提交流程,排程機制以及shuffle的過程,廢話不多說,我們直接開始吧! 1. Spark基本API解讀 首先我們寫
13.大資料學習之旅——HBase第三天
LSM-TREE 概述 眾所周知傳統磁碟I/O是比較耗效能的,優化系統性能往往需要和磁碟I/O打交道,而磁碟I/O產 生的時延主要由下面3個因素決定: 1)尋道時間(將磁碟臂移動到適當的柱面上所需要的時間,尋道時移動到相鄰柱面移動所需 時間1ms,而隨機移動所需時間位5~1
大資料學習之SPARK計算天下
學習大資料技術,SPARK無疑是繞不過去的技術之一,它的重要性不言而喻,本文將通過提問的形式圍繞著SPARK進行介紹,希望對大家有幫助,與此同時,感謝為本文提供素材的科多大資料的武老師。 為了輔助大家更好去了解大資料技術,本文集中討論Spark的一系列技術問題,大家在學習過程中如果遇到困難,可以
大資料學習之小白如何學大資料?(詳細篇)
大資料這個話題熱度一直高居不下,不僅是國家政策的扶持,也是科技順應時代的發展。想要學習大資料,我們該怎麼做呢?大資料學習路線是什麼?先帶大家瞭解一下大資料的特徵以及發展方向。 大資料的三個發展方向,平臺搭建/優化/運維/監控、大資料開發/設計/架構、資料分析/挖掘。 先說一下大資料的4V特徵: 資料
大資料學習之HDP SANDBOX開始學習
大資料學習之HDP SANDBOX開始學習 2017年05月07日 17:33:45 三名狂客 閱讀數:2167 HDP HDP是什麼? HDP全稱叫做Hortonworks Data Platform。 Hortonworks資料平臺是一款基於Apa
大資料學習之路87-SparkSQL的執行結果以不同方式寫出,及載入
我們可以將我們之前寫的wordcount的結果寫成各種格式: csv格式: 程式碼如下: package com.test.SparkSQL import org.apache.avro.generic.GenericData.StringType import org.apach
大資料學習之路91-Hadoop的高可用
我們之前一直沒有配置過hadoop的高可用,今天我們就來配置一下 之前我們的namenode只要一掛,則整個hdfs叢集就完蛋。雖然我們可以通過重啟的方式來恢復,可是我們重啟好之前,我們的hdfs叢集就不能提供服務了。所以它存在單點故障問題。 我們可以設定兩臺namenode ,一臺為a
大資料學習之路90-sparkSQL自定義聚合函式UDAF
什麼是UDAF?就是輸入N行得到一個結果,屬於聚合類的。 接下來我們就寫一個求幾何平均數的一個自定義聚合函式的例子 我們從開頭寫起,先來看看需要進行計算的數如何產生: package com.test.SparkSQL import java.lang import org
大資料學習之路89-sparkSQL自定義函式計算ip歸屬地
使用sparkSQL當遇到業務邏輯相關的時候,就有可能會搞不定。因為業務l邏輯需要寫很多程式碼,呼叫很多介面。這個時候sql就搞不定了。那麼這個時候我們就會想能不能將業務邏輯嵌入到sql中? 這種就類似於我們在hive中使用過的自定義函式UDF(user define function使用者
大資料學習之路95-SparkStreaming寫WordCount
程式如下: package com.test.sparkStreaming import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream} import org.apache.spark.streaming
大資料學習之路94-kafka叢集安裝
解壓 Kafka 安裝包 修改配置檔案 config/server.properties vi server.properties broker.id=0 //為依次增長的:0、1、2、3、4,叢集中唯一id log.dirs=/kafkaData/logs // Kafka
大資料學習之路93-kafka簡介
kafka是實時計算中用來做資料收集的,它是一個訊息佇列。它使用scala開發的。 那麼我們就會想我們這裡能不能用hdfs做資料儲存呢?它是分散式的,高可用的。 但是它還缺少一些重要的功能:比如說我們往hdfs中寫資料,之後我們需要實時的讀取。當我們讀到某一行的時候斷掉了,假如說這個讀取
大資料學習之路92-sparkSQL整合hive
我們知道sparkSQL跟hive是相容的,他支援hive的元資料庫,sql語法,多種型別的UDF, 而且還支援hive的序列化和反序列化方式,意思就是hive寫的自定義函式,spark拿過來就能用。 最重要的就是MetaStore元資料庫,以後一旦我們使用hive的Meta
大資料學習之路98-Zookeeper管理Kafka的OffSet
我們之前的OffSet都是交給broker自己管理的,現在我們希望自己管理。 我們可以通過zookeeper進行管理。 我們在程式中想要使用zookeeper,那麼就肯定會有api允許我們操作。 new ZKGroupTopicDirs() 注意:這裡使用客戶端的時候導包為:
大資料學習之路97-kafka直連方式(spark streaming 整合kafka 0.10版本)
我們之前SparkStreaming整合Kafka的時候用的是傻瓜式的方式-----createStream,但是這種方式的效率很低。而且在kafka 0.10版本之後就不再提供了。 接下來我們使用Kafka直連的方式,這種方式其實是呼叫Kafka底層的消費資料的API,我們知道,越底層的東