1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# pip install elasticsearch -i http://... --trusted-host mirrors... # 选择镜像,主要是针对没有外网权限的公司
from elasticsearch import Elasticsearch  
# elasticsearch集群服务器的地址,可以是多个地址
ES = ['127.0.0.1:9200',]
# 创建elasticsearch客户端
es = Elasticsearch(
    ES,
    # 启动前嗅探es集群服务器
    sniff_on_start=True,
    # es集群服务器结点连接异常时是否刷新es节点信息
    sniff_on_connection_fail=True,
    # 每60秒刷新节点信息
    sniffer_timeout=60
)

查看索引列表

1
2
3
es.indices.get_alias()
# 判断索引是否存在
es.indices.exists(index)

搜索条件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 简单条件 term  'um' = 'ABC'
body = {
    'query': {
        'term': {
            'um':'ABC'
        }
    }
}
# 简单条件 terms  'um' = 'ABC','BCD'
body = {
    'query': {
        'terms': {
            'um':['ABC','BCD']
        }
    }
}
# 简单条件 term  'um' = 'ABC', 'um' = 'BCD', 搜索结果是取后一个条件('um' = 'BCD'),前一个条件被覆盖
body = {
    'query': {
        'term': {
            'um':'ABC',
        },
        'term': {
            'um':'BCD',
        }
    }
}
# must 必须同时符合两个条件
# should 两个条件满足一个即可
body = {
    'query': {
        'bool': {
            'must': [
                {'term': {
                'um':'ABC',
                }},
                {'term': {
                'um':'BCD',
                }},
            ],
        }
    }
}

查询

1
2
3
4
5
# index为索引,暂时理解为数据库的表名
# size 是检索的条数
query = es.search(index='name', body=body, size=100)
for i, x in enumerate(query['hits']['hits']):
    print(x['_source'])

批量插入数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from elasticsearch import helpers
actions = [{
                "_index": "name2",
                "_type": "info",
                "_source": {
                  "data": "数据"
                }
            }
]
helpers.bulk(es, actions)

打赏

微信 微信 支付宝 支付宝
万分感谢