• python 进行es查询


    在python中,要连接elasticsearch 必须先安装:elasticsearch

    pip install elasticsearch
    

    创建elasticsearch 连接实例

    #encoding:utf-8
    from elasticsearch import Elasticsearch
    
    #创建es连接实例
    es = Elasticsearch(["http://192.168.11.128:9200"])
    

    创建es索引

    #创建es索引
    # es.indices.create(index="account")

    向es索引中写入数据

    # 向es索引中写入数据
    body_value={
        "id":4,
        "account_number" : "000000",
        "firstname" : "jcTang",
        "lastname" : "Tang",
        "age" : 29,
        "gender" : "1",
        "phone":18926968869,
        "address" : "深圳市南山区xx路xx号xx房",
        "email" : "jcTang1512022@163.com",
        "city" : "上海",
        "state" : "0"
    }
    es.index(index="account",doc_type="test-type",ignore=404,body=body_value)

    查询es索引下的数据:match_all

    query={
        "query":{
            "match_all":{}
        }
    }
    value = es.search(index="account",body=query)
    print(value)

    查询结果:

    {
        'took': 1,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 5,
                'relation': 'eq'
            },
            'max_score': 1.0,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7exk7YEBLWmmfdpNGSu5',
                '_score': 1.0,
                '_source': {
                    'id': 1,
                    'account_number': '000000',
                    'firstname': 'jcTang',
                    'lastname': 'Tang',
                    'age': 29,
                    'gender': '0',
                    'phone': 15100000000,
                    'address': '深圳市南山区xx路xx号xx房',
                    'email': 'jctang2022@euron.com',
                    'city': '深圳',
                    'state': '1'
                }
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7uxn7YEBLWmmfdpNmSuf',
                '_score': 1.0,
                '_source': {
                    'id': 2,
                    'account_number': '000001',
                    'firstname': 'lilei',
                    'lastname': 'lei',
                    'age': 25,
                    'gender': '0',
                    'phone': 15900326519,
                    'address': '深圳市宝安区xx路xx号xx房',
                    'email': 'lilei159@gmail.com',
                    'city': '深圳',
                    'state': '1'
                }
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '2',
                '_score': 1.0,
                '_source': {
                    'id': 3,
                    'account_number': '000002',
                    'firstname': 'wangfang',
                    'lastname': 'wang',
                    'age': 27,
                    'gender': '1',
                    'phone': 13156968869,
                    'address': '北京市昌平区xx路xx号xx房',
                    'email': 'wangfang@163.com',
                    'city': '北京',
                    'state': '0'
                }
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '3',
                '_score': 1.0,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                }
            }]
        }
    }
    指定查询某个条件的数据
    #查询指定数据
    query={
        "query":{
            "match":{
                '_id': '3'
            }
        }
    }
    value = es.search(index="account",body=query)
    print(value)

    查询结果

    {
        'took': 11,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 1,
                'relation': 'eq'
            },
            'max_score': 1.0,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '3',
                '_score': 1.0,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                }
            }]
        }
    }
    查询全部并升序排序
    # 查询全部并升序排序
    query={
        "query":{
            "match_all":{}
        },
        "sort":[
            {"id":"asc"}
        ]
    }
    asc_value = es.search(index="account",body=query)
    print(asc_value)

    查询结果:

    {
        'took': 3,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 5,
                'relation': 'eq'
            },
            'max_score': None,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7exk7YEBLWmmfdpNGSu5',
                '_score': None,
                '_source': {
                    'id': 1,
                    'account_number': '000000',
                    'firstname': 'jcTang',
                    'lastname': 'Tang',
                    'age': 29,
                    'gender': '0',
                    'phone': 15100000000,
                    'address': '深圳市南山区xx路xx号xx房',
                    'email': 'jctang2022@euron.com',
                    'city': '深圳',
                    'state': '1'
                },
                'sort': [1]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7uxn7YEBLWmmfdpNmSuf',
                '_score': None,
                '_source': {
                    'id': 2,
                    'account_number': '000001',
                    'firstname': 'lilei',
                    'lastname': 'lei',
                    'age': 25,
                    'gender': '0',
                    'phone': 15900326519,
                    'address': '深圳市宝安区xx路xx号xx房',
                    'email': 'lilei159@gmail.com',
                    'city': '深圳',
                    'state': '1'
                },
                'sort': [2]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '2',
                '_score': None,
                '_source': {
                    'id': 3,
                    'account_number': '000002',
                    'firstname': 'wangfang',
                    'lastname': 'wang',
                    'age': 27,
                    'gender': '1',
                    'phone': 13156968869,
                    'address': '北京市昌平区xx路xx号xx房',
                    'email': 'wangfang@163.com',
                    'city': '北京',
                    'state': '0'
                },
                'sort': [3]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '3',
                '_score': None,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房 ',
                    'email ': 'wei89548 @163.com ',
                    'city ': '上海 ',
                    'state ': '0 '
                },
                'sort ': [4]
            }]
        }
    }
    查询全部并降序排序
    #查询全部并降序排序
    query={
        "query":{
            "match_all":{}
        },
        "sort":[
            {"id":"desc"}
        ]
    }
    desc_value = es.search(index="account",body=query)
    print(desc_value)

    查询结果:

    {
        'took': 19,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 5,
                'relation': 'eq'
            },
            'max_score': None,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '3',
                '_score': None,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                },
                'sort': [4]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '2',
                '_score': None,
                '_source': {
                    'id': 3,
                    'account_number': '000002',
                    'firstname': 'wangfang',
                    'lastname': 'wang',
                    'age': 27,
                    'gender': '1',
                    'phone': 13156968869,
                    'address': '北京市昌平区xx路xx号xx房',
                    'email': 'wangfang@163.com',
                    'city': '北京',
                    'state': '0'
                },
                'sort': [3]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7uxn7YEBLWmmfdpNmSuf',
                '_score': None,
                '_source': {
                    'id': 2,
                    'account_number': '000001',
                    'firstname': 'lilei',
                    'lastname': 'lei',
                    'age': 25,
                    'gender': '0',
                    'phone': 15900326519,
                    'address': '深圳市宝安区xx路xx号xx房',
                    'email': 'lilei159@gmail.com',
                    'city': '深圳',
                    'state': '1'
                },
                'sort': [2]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7exk7YEBLWmmfdpNGSu5',
                '_score': None,
                '_source': {
                    'id': 1,
                    'account_number': '000000',
                    'firstname': 'jcTang',
                    'lastname': 'Tang',
                    'age': 29,
                    'gender': '0',
                    'phone': 15100000000,
                    'address': '深圳市南山区xx路xx号xx房',
                    'email': 'jctang2022@euron.com',
                    'city': '深圳',
                    'state': '1'
                },
                'sort': [1]
            }]
        }
    }
    先排序再分页查询
    # 先排序再分页查询
    query={
        "query":{
            "match_all":{}
        },
        "sort":[
            {"id":"desc"}
        ],
        "from":1,
        "size":2,
    }
    
    size_value = es.search(index="account",body=query)
    print(size_value)
    

    查询结果:from 分页开始位置,size从开始位置起返回多少条数据

    {
        'took': 5,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 5,
                'relation': 'eq'
            },
            'max_score': None,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7-yL7YEBLWmmfdpN7ytZ',
                '_score': None,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                },
                'sort': [4]
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '2',
                '_score': None,
                '_source': {
                    'id': 3,
                    'account_number': '000002',
                    'firstname': 'wangfang',
                    'lastname': 'wang',
                    'age': 27,
                    'gender': '1',
                    'phone': 13156968869,
                    'address': '北京市昌平区xx路xx号xx房',
                    'email': 'wangfang@163.com',
                    'city': '北京',
                    'state': '0'
                },
                'sort': [3]
            }]
        }
    }
    短语搜索match_phrase
    # 短语搜索match_phrase
    query={
        "query":{
            "match_phrase":{
                "age":29
            }
        }
    }
    match_phrase_value = es.search(index="account",body=query)
    print(match_phrase_value)

    查询结果:

    {
        'took': 4,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 3,
                'relation': 'eq'
            },
            'max_score': 1.0,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7exk7YEBLWmmfdpNGSu5',
                '_score': 1.0,
                '_source': {
                    'id': 1,
                    'account_number': '000000',
                    'firstname': 'jcTang',
                    'lastname': 'Tang',
                    'age': 29,
                    'gender': '0',
                    'phone': 15100000000,
                    'address': '深圳市南山区xx路xx号xx房',
                    'email': 'jctang2022@euron.com',
                    'city': '深圳',
                    'state': '1'
                }
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '3',
                '_score': 1.0,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                }
            }, {
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7-yL7YEBLWmmfdpN7ytZ',
                '_score': 1.0,
                '_source': {
                    'id': 4,
                    'account_number': '000004',
                    'firstname': 'weiwu',
                    'lastname': 'wei',
                    'age': 29,
                    'gender': '1',
                    'phone': 18926968869,
                    'address': '上海市黄浦区xx路xx号xx房',
                    'email': 'wei89548@163.com',
                    'city': '上海',
                    'state': '0'
                }
            }]
        }
    }
    多条件查找bool:must 必须满足条件,must_not 不满足条件
    #多条件查找bool
    query={
        "query":{
            "bool":{
                "must":[
                    {"match":{"age":29}}
                ],
                "must_not":[
                    {"match":{'city':"上海"}}
                ]
            }
        }
    }
    bool_value = es.search(index="account",body=query)
    print(bool_value)

    查询结果:

    {
        'took': 50,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 1,
                'relation': 'eq'
            },
            'max_score': 1.0,
            'hits': [{
                '_index': 'account',
                '_type': 'test-type',
                '_id': '7exk7YEBLWmmfdpNGSu5',
                '_score': 1.0,
                '_source': {
                    'id': 1,
                    'account_number': '000000',
                    'firstname': 'jcTang',
                    'lastname': 'Tang',
                    'age': 29,
                    'gender': '0',
                    'phone': 15100000000,
                    'address': '深圳市南山区xx路xx号xx房',
                    'email': 'jctang2022@euron.com',
                    'city': '深圳',
                    'state': '1'
                }
            }]
        }
    }
    过滤器filter
    # 过滤器filter
    # 查找年龄在27~30之间
    qurey={
        "query":{
            "bool":{
                "must":{"match_all":{}},
                "filter":{
                    "range":{
                        "age":{
                            "gte":27,
                            "lte":30
                        }
                    }
                }
                
            }
        }
    }
    filter_value = es.search(index="account",body=qurey)
    print(filter_value)

    查询结果:

    {
        'took': 1,
        'timed_out': False,
        '_shards': {
            'total': 1,
            'successful': 1,
            'skipped': 0,
            'failed': 0
        },
        'hits': {
            'total': {
                'value': 4,
                'relation': 'eq'
            },
            'max_score': 1.0,
            'hits': [{
                    '_index': 'account',
                    '_type': 'test-type',
                    '_id': '7exk7YEBLWmmfdpNGSu5',
                    '_score': 1.0,
                    '_source': {
                        'id': 1,
                        'account_number': '000000',
                        'firstname': 'jcTang',
                        'lastname': 'Tang',
                        'age': 29,
                        'gender': '0',
                        'phone': 15100000000,
                        'address': '深圳市南山区xx路xx号xx房',
                        'email': 'jctang2022@euron.com',
                        'city': '深圳',
                        'state': '1'
                    }
                }, {
                    '_index': 'account',
                    '_type': 'test-type',
                    '_id': '2',
                    '_score': 1.0,
                    '_source': {
                        'id': 3,
                        'account_number': '000002',
                        'firstname': 'wangfang',
                        'lastname': 'wang',
                        'age': 27,
                        'gender': '1',
                        'phone': 13156968869,
                        'address': '北京市昌平区xx路xx号xx房 ',
                        '
                        'email ': 'wangfang @163.com ',
                        '
                        'city ': '北京 ',
                        'state ': '0 '
                    }
                }
            }
        }]
    }
    }
    根据条件删除指定数据
    #根据条件删除指定数据
    query={
        "query":{
            "match":{
                '_id': '1'
            }
        }
    }
    es.delete_by_query(index="account",body=query)

    参考来自:https://www.shuzhiduo.com/A/VGzlDZX8zb/

  • 相关阅读:
    【重构笔记02】重新组织函数
    【重构笔记01】第一个案例/补齐插件
    仿iphone日历插件(beta)
    都别说工资低了,我们来一起写简单的dom选择器吧!
    【单页应用】一起来单页应用吧,实现简单微博功能!(总结)
    【单页应用】一起来单页应用吧,实现简单微博功能!(下)
    【单页应用】一起来单页应用吧,实现简单微博功能!(上)
    RequireJS与Backbone简单整合
    初探Backbone
    RequireJS学习笔记
  • 原文地址:https://www.cnblogs.com/JcHome/p/16468430.html
Copyright © 2020-2023  润新知