Python操作ElasticSearch笔记

第一步安装Elasticsearch

1. 下载tar包,进行解压

第二部安装pip

1. 到下载的包:用python setup.py install 进行编译
2. 然后配置环境变量(变量环境为python下的scripts):C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\Scripts

第三步查看pii是否安装成功:(配置完环境变量之后需要重启,才能生效)

pip list
Package    Version
---------- -------
pip        19.0.3
setuptools 40.6.2

第四步使用pip 安装elasticsearch

pip install elasticsearch

第五步,在python中连接ES

1. 需要指定访问es的主机和端口号
2. 确定需要访问的索引 index 
3. 确定doc_typey
    通过访问 主机+端口号+index
        示例:   http://xx.xx.xx.xx9200/hi_camera_info
            ```{
            "hi_camera_info":{
                "aliases":{
        
                },
                "mappings":{
                    "info":
             ```
    doc_type 就是mappings中对应的info
```
1. 
    from elasticsearch import Elasticsearch
    es = Elasticsearch(hosts="xx.xx.xx.xx# 指定主机", port=9200 # 指定端口, timeout=200)
    query = {
        "from": 0,
        "size": 2
    }
    result = es.search(index="hi_camera_info", doc_type="info", body=query)
    value1 = []
    for value in result['hits']['hits']:
        value1 += [value]
    for value in value1:
        print(value['_source'])
```  
采用pyton 查询Elasticsearch并导出所有的数据到Excel中.

[link](https://blog.csdn.net/fwj_ntu/article/details/87863788)

案例:

    ```
    import csv
    from elasticsearch import Elasticsearch
    
    es = Elasticsearch(hosts="xx.xx.xx.xx", port=9200, timeout=200)
    # 1. 先借助游标,将所有结果数据存储到内存中
    # 2. 然后将内存中的结果数据写入到磁盘,也就是文件中
    query1 = {
        "size": 100
    }
    query = es.search(index="hi_camera_info", doc_type="info", scroll='5m', body=query1)
    value = query["hits"]["hits"]
    
    # es查询出的结果第一页
    results = query['hits']['hits']
    # es查询出的结果总量
    total = query['hits']['total']
    # 游标用于输出es查询出的所有结果
    scroll_id = query['_scroll_id']
    # 在发送查询请求的时候,就告诉ES需要使用游标,并定义每次返回数据量的大小
    # 定义一个list变量results用来存储数据结果,在代码中,可以另其为空list,即results=[],也可以先将返回结果
    # 的第一页存尽进来, 即results = query['hits']['hits']
    # 对于所有二级果数据写个分页加载到内存变量的循环
    for i in range(0, int(total / 100) + 1):
        # scroll参数必须制定否则会报错
        query_scroll = es.scroll(scroll_id=scroll_id, scroll="5m")['hits']['hits']
        results += query_scroll
    with open("D://ml/data.csv", 'w', newline='', encoding="gbk") as flow:
        # 获取_source 下的所有字段名
        names = results[0]['_source'].keys()
        csv_writer = csv.writer(flow)
        csv_writer.writerow(names)
        for res in results:
            csv_writer.writerow(res['_source'].values())
    print("done!")

    ```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容