def delete_matching_documents(index, type, field, value, **kwargs):
    # open connection if one hasn't been provided
    conn = kwargs.get('conn', False)
    if not conn:
        conn = connect_and_create_index(index)

    # a max_documents of 0 means unlimited
    max_documents = kwargs.get('max_documents', 0)

    # cycle through fields to find matches
    documents = conn.search_raw(
        indices=[index],
        doc_types=[type],
        query=pyes.FieldQuery(pyes.FieldParameter(field, value))
    )

    count = 0
    if len(documents['hits']['hits']) > 0:
        for hit in documents['hits']['hits']:
            document_id = hit['_id']
            conn.delete(index, type, document_id)
            count = count + 1
            if count == max_documents:
                return count

    return count
def connect_and_get_aip_data(uuid):
    conn = connect_and_create_index('aips')
    aips = conn.search(
        query=pyes.FieldQuery(pyes.FieldParameter('uuid', uuid)),
        fields='uuid,name,filePath,size,origin,created'
    )
    return aips[0]
示例#3
0
文件: model.py 项目: mozilla/toolbox
 def delete(self, project):
     MemoryCache.delete(self, project)
     query = pyes.FieldQuery()
     query.add('name', project['name'])
     results = self.es_query(query)
     if results['hits']['hits']:
         id = results['hits']['hits'][0]['_id']
         self.es.delete(self.es_index, self.doc_type, id)
示例#4
0
def archival_storage_search_augment_aip_results(conn, aips):
    for aip_uuid in aips:
        documents = conn.search_raw(
            query=pyes.FieldQuery(pyes.FieldParameter('uuid', aip_uuid.term)))
        if len(documents['hits']['hits']) > 0:
            aip_uuid.name = documents['hits']['hits'][0]['_source']['name']
            aip_uuid.size = '{0:.2f} MB'.format(
                documents['hits']['hits'][0]['_source']['size'])
            aip_uuid.date = documents['hits']['hits'][0]['_source']['created']
        else:
            aip_uuid.name = '(data missing)'
示例#5
0
文件: model.py 项目: mozilla/toolbox
    def save(self, project):
        query = pyes.FieldQuery()
        query.add('name', project['name'])
        results = self.es_query(query)

        # If there is an existing records in ES with the same
        # project name, update that record.  Otherwise create a new record.
        id = None
        if results['hits']['hits']:
            id = results['hits']['hits'][0]['_id']

        self.es.index(project, self.es_index, self.doc_type, id)
def connect_and_delete_aip_files(uuid):
    deleted = 0
    conn = pyes.ES(getElasticsearchServerHostAndPort())
    documents = conn.search_raw(query=pyes.FieldQuery(pyes.FieldParameter('AIPUUID', uuid)))
    if len(documents['hits']['hits']) > 0:
        for hit in documents['hits']['hits']:
            document_id = hit['_id']
            conn.delete('aips', 'aipfile', document_id)
            deleted = deleted + 1
        print str(deleted) + ' index documents removed.'
    else:
        print 'No AIP files found.'
示例#7
0
def search_augment_aip_results(conn, aips):
    for aip_uuid in aips:
        documents = conn.search_raw(query=pyes.FieldQuery(
            pyes.FieldParameter('uuid', aip_uuid.term)),
                                    fields='name,size,created')
        if len(documents['hits']['hits']) > 0:
            aip_uuid.name = documents['hits']['hits'][0]['fields']['name']
            aip_uuid.size = '{0:.2f} MB'.format(
                documents['hits']['hits'][0]['fields']['size'])
            aip_uuid.date = documents['hits']['hits'][0]['fields']['created']
            aip_uuid.document_id_no_hyphens = documents['hits']['hits'][0][
                '_id'].replace('-', '____')
        else:
            aip_uuid.name = '(data missing)'
def connect_and_remove_sip_transfer_files(uuid):
    # get file UUIDs for each file in the SIP
    sql = "SELECT fileUUID from Files WHERE sipUUID='" + MySQLdb.escape_string(uuid) + "'"

    rows = databaseInterface.queryAllSQL(sql)

    if len(rows) > 0:
        conn = connect_and_create_index('transfers')

        # cycle through file UUIDs and delete files from transfer backlog
        for row in rows:
            documents = conn.search_raw(query=pyes.FieldQuery(pyes.FieldParameter('fileuuid', row[0])))
            if len(documents['hits']['hits']) > 0:
                document_id = documents['hits']['hits'][0]['_id']
                conn.delete('transfers', 'transferfile', document_id)
def connect_and_change_transfer_file_status(uuid, status):
    # get file UUIDs for each file in the SIP
    sql = "SELECT fileUUID from Files WHERE transferUUID='" + MySQLdb.escape_string(uuid) + "'"

    rows = databaseInterface.queryAllSQL(sql)

    if len(rows) > 0:
        conn = connect_and_create_index('transfers')

        # cycle through file UUIDs and update status
        for row in rows:
            documents = conn.search_raw(query=pyes.FieldQuery(pyes.FieldParameter('fileuuid', row[0])))
            if len(documents['hits']['hits']) > 0:
                document_id = documents['hits']['hits'][0]['_id']
                conn.update({'status': status}, 'transfers', 'transferfile', document_id)
    return len(rows)
def connect_and_get_aip_data(uuid):
    conn = connect_and_create_index('aips')
    aips = conn.search(
        query=pyes.FieldQuery(pyes.FieldParameter('uuid', uuid)))
    return aips[0]