簡體   English   中英

Python api 刪除 -- elasticsearch

[英]Python api to delete -- elasticsearch

我想在 elasticsearch 中刪除一個特定的“_id”,但它不能使用 elasticsearch python api 客戶端工作。

doc = {'system_caused': 'office', 'division': 'National', 'addt_notes': '', 'pg': '100', 'date': '2016/02/15 08:56',
               'duration': '15 minutes', 'outage_caused': 'Scheduled', 'ticket_num': '1234', 'ticket_type': 'JIRA', 'error_count': '1,000 - 5,000'}
self.es = Elasticsearch(['localhost'], verify_certs=True)

result = self.es.index(index='tickets', doc_type='tickets', body=doc)


doc = {'_id': result['_id']}
result = self.es.delete(
        index='tickets', doc_type='tickets', **doc)

插入工作正常,但刪除失敗。

這是我得到的錯誤 -

TypeError: delete() got an unexpected keyword argument '_id'

根據源代碼, delete的輸入參數包括id ,但不包括_id 這里查看代碼。

在dict前面使用**運算符時,它會擴展為關鍵字參數。 所以我們可以把它重寫為:

result = self.es.delete(
    index='tickets', doc_type='tickets',
    _id=result['_id'])

因此,您將_id作為關鍵字參數之一傳遞。 正如@Forge所說,我假設您打算在delete調用中使用id

from elasticsearch import Elasticsearch
from elasticsearch import helpers
from elasticsearch_dsl import connections
import pandas as pd

# initialize list of lists
data = [['tom', 10, 'NY'], ['nick', 15, 'NY'], ['juli', 14, 'NY'], ['akshay', 30, 'IND'], ['Amit', 14, 'IND']]

# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Country'])

from elasticsearch import Elasticsearch
from elasticsearch import helpers

##連接到彈性搜索集群

es_client = connections.create_connection(hosts=['http://localhost:9200/'])
def doc_generator(df):
    df_iter = df.iterrows()
    for index, document in df_iter:
        yield {
                "_index": 'age_sample',
                "_type": "_doc",
                "_source": document,
            }

helpers.bulk(es_client, doc_generator(df))

from elasticsearch_dsl import Search
s = Search(index='age_sample').query("match", _id='V5A3Y34Bq-Uo6Q7qyfBJ')
response = s.delete()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM