1. 程式人生 > >大資料學習[13]:elasticsearch之簡單的python API

大資料學習[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,我們知道,越底層的東