zoukankan      html  css  js  c++  java
  • python操作es

    一 python中集成es两种方式

    1 原生集成

    # Official low-level client for Elasticsearch
    
    ### 等同于pymysql
    #pip3 install elasticsearch
    
    
    from elasticsearch import Elasticsearch
    
    obj = Elasticsearch()   # 得到一个对象
    # 创建索引(Index)
    # result = obj.indices.create(index='user', body={"userid":'1','username':'lqz'},ignore=400)
    # print(result)
    # 删除索引
    # result = obj.indices.delete(index='user', ignore=[400, 404])
    # 插入数据
    # data = {'userid': '1', 'username': 'lqz','password':'123'}
    # result = obj.create(index='news', doc_type='_doc', id=1, body=data)
    # print(result)
    # 更新数据
    '''
    不用doc包裹会报错
    ActionRequestValidationException[Validation Failed: 1: script or doc is missing
    '''
    # data ={'doc':{'userid': '1', 'username': 'lqz','password':'123ee','test':'test'}}
    # result = obj.update(index='news', doc_type='_doc', body=data, id=1)
    # print(result)
    
    
    # 删除数据
    # result = obj.delete(index='news', doc_type='_doc', id=1)
    # print(result)
    
    # 查询
    # 查找所有文档
    # query = {'query': {'match_all': {}}}
    #  查找名字叫做jack的所有文档
    query = {'query': {'match': {'title': '十个'}}}
    
    # 查找年龄大于11的所有文档
    # query = {'query': {'range': {'age': {'gt': 11}}}}
    
    allDoc = obj.search(index='books', doc_type='_doc', body=query)
    # print(allDoc)
    print(allDoc['hits']['hits'][0]['_source'])
    

    2 dsl集成

    # Elasticsearch DSL is a high-level
    # pip3 install elasticsearch-dsl
    from datetime import datetime
    from elasticsearch_dsl import Document, Date, Nested, Boolean,analyzer, InnerDoc, Completion, Keyword, Text,Integer
    from elasticsearch_dsl.connections import connections
    connections.create_connection(hosts=["localhost"])
    class Article(Document):
        title = Text(analyzer='ik_max_word')
        author = Text()
        class Index:
            name = 'myindex'
        def save(self, ** kwargs):
            return super(Article, self).save(** kwargs)
    if __name__ == '__main__':
        # Article.init()  # 创建索引
        # 保存数据
        # article = Article()
        # article.title = "测试测试阿斯顿发送到发斯蒂芬啊啊士大夫阿斯蒂芬"
        # article.author = "lqz"
        # article.save()  # 数据就保存了
    
        #查询数据
        # s=Article.search()
        # s = s.filter('match', title="测试")
        #
        # results = s.execute()  # 执行
        # print(results[0].title)
    
        #删除数据
        s = Article.search()
        s = s.filter('match', title="李清照").delete()
    
        #修改数据
        # s = Article().search()
        # s = s.filter('match', title="测试")
        # results = s.execute()
        # print(results[0])
        # results[0].title="李清照阿斯顿发送到发送阿斯蒂"
        # results[0].save()
    
    永远不要高估自己
  • 相关阅读:
    Ant in Action读书笔记(一):Ant里的Property是immutable的
    Maven内置变量
    Ant in Action读书笔记(四):如何在Ant里对numberic的property进行比较?
    Ant in Action读书笔记(三):在Ant中导入环境变量
    Ant in Action读书笔记(五):如何在Ant里运行Groovy脚本
    查看oracle文件情况
    使用sc创建和删除服务
    c# 控制台程序输入输出流重定向
    查看某端口的占用情况
    mysql修改root密码
  • 原文地址:https://www.cnblogs.com/liqiangwei/p/14530809.html
Copyright © 2011-2022 走看看