博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-elasticsearch从创建索引到写入数据
阅读量:5995 次
发布时间:2019-06-20

本文共 3967 字,大约阅读时间需要 13 分钟。

hot3.png

创建索引

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')

mappings = {

            "mappings": {
                "type_doc_test": {                           #type_doc_test为doc_type
                    "properties": {
                        "id": {
                            "type": "long",
                            "index": "false"
                        },
                        "serial": {
                            "type": "keyword",  # keyword不会进行分词,text会分词
                            "index": "false"  # 不建索引
                        },
                        #tags可以存json格式,访问tags.content
                        "tags": {
                            "type": "object",
                            "properties": {
                                "content": {"type": "keyword", "index": True},
                                "dominant_color_name": {"type": "keyword", "index": True},
                                "skill": {"type": "keyword", "index": True},
                            }
                        },
                        "hasTag": {
                            "type": "long",
                            "index": True
                        },
                        "status": {
                            "type": "long",
                            "index": True
                        },
                        "createTime": {
                            "type": "date",
                            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                        },
                        "updateTime": {
                            "type": "date",
                            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                        }
                    }
                }
            }
        }

res = es.indices.create(index = 'index_test',body =mappings)

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
44
45
46
通过以上代码即可创建es索引

写入一条数据

写入数据需要根据 创建的es索引类型对应的数据结构写入:

from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

action ={

              "id": "1111122222",
              "serial":"版本",
              #以下tags.content是错误的写法
              #"tags.content" :"标签2",
              #"tags.dominant_color_name": "域名的颜色黄色",
              #正确的写法如下:
              "tags":{"content":"标签3","dominant_color_name": "域名的颜色黄色"},
              #按照字典的格式写入,如果用上面的那种写法,会直接写成一个tags.content字段。
              #而不是在tags中content添加数据,这点需要注意
              "tags.skill":"分类信息",
              "hasTag":"123",
              "status":"11",
              "createTime" :"2018-2-2",
              "updateTime":"2018-2-3",
                }
es.index(index="index_test",doc_type="doc_type_test",body = action)
即可写入一条数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
错误的写入

正确的写入

写入多条数据

from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk

es = Elasticsearch('192.168.1.1:9200')

ACTIONS = []

action1 ={

                    "_index": "indes_test",
                    "_type": "doc_type_test",
                    "_id":"bSlegGUBmJ2C8ZCSC1R1",
                    "_source":{
                        "id": "1111122222",
                        "serial":"版本",
                        "tags.content" :"标签2",
                        "tags.dominant_color_name": "域名的颜色黄色",
                        "tags.skill":"分类信息",
                        "hasTag":"123",
                        "status":"11",
                        "createTime" :"2018-2-2",
                        "updateTime":"2018-2-3",
                    }
                }
action2 ={
                    "_index": "indes_test",
                    "_type": "doc_type_test",
                    "_id":"bSlegGUBmJ2C8ZCSC1R2",
                    "_source":{
                        "id": "1111122222",
                        "serial":"版本",
                        "tags.content" :"标签2",
                        "tags.dominant_color_name": "域名的颜色黄色",
                        "tags.skill":"分类信息",
                        "hasTag":"123",
                        "status":"11",
                        "createTime" :"2018-2-2",
                        "updateTime":"2018-2-3",
                    }
                }

ACTIONS.append(action1)

ACTIONS.append(action2)

res,_ =bulk(es, ACTIONS, index="indes_test", raise_on_error=True)

print(res)
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
44
45
46
这个方式是手动指定了id,如果把”_id”这个参数去掉即可自动生成id数据. 
如下:

action2 ={

                    "_index": "indes_test",
                    "_type": "doc_type_test",

                    "_source":{

                        "id": "1111122222",
                        "serial":"版本",
                        "tags.content" :"标签2",
                        "tags.dominant_color_name": "域名的颜色黄色",
                        "tags.skill":"分类信息",
                        "hasTag":"123",
                        "status":"11",
                        "createTime" :"2018-2-2",
                        "updateTime":"2018-2-3",
                    }
                }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
删除一条数据
from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

res = es.delete(index="index_test",doc_type="doc_type_test", id ="bSlegGUBmJ2C8ZCSC1R1")

print(res)
直接替换id的即可删除所需的id
1
2
3
4
5
6
7
查询一条数据
from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

res = es.get(index="index_test",doc_type="doc_type_test",  id ="bSlegGUBmJ2C8ZCSC1R2")

print(res)
直接替换id的即可查询所需的id
1
2
3
4
5
6
7
查询所有数据
from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

res = es.search(index="index_test",doc_type="doc_type_test")

print(res)
print(res['hits']['hits'])

通过['hits']参数,可以解析出查询数据的详细内容

1
2
3
4
5
6
7
8
9
10
根据关键词查找

from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

doc = {

            "query": {
                "match": {
                    "_id": "aSlZgGUBmJ2C8ZCSPVRO"
                }
            }
        }

res = es.search(index="index_test",doc_type="doc_type_test",body=doc)
print(res)
 

转载于:https://my.oschina.net/u/3371661/blog/3019317

你可能感兴趣的文章
Oracle DataBase单实例使用ASM案例(4)--AIX系统Oracle 10g应用
查看>>
Linux流量监控工具 - iftop
查看>>
Ylmf OS4开启3D
查看>>
IP电话简单注册---CME
查看>>
TCP: time wait bucket table overflow
查看>>
查看及设定IIS内置IWAM_和IUSR_用户的密码
查看>>
如何在命令行下使用Android NDK交叉编译工具
查看>>
SpringMVC通过配置mvc:view-controller直接解析到视图页面
查看>>
paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
查看>>
VMware12下 桥接模式 静态IP配置
查看>>
postfix邮件系统
查看>>
iBatis2学习笔记:多对多映射(双向)
查看>>
书目片段
查看>>
Linux-HA开源软件Heartbeat(配置篇)
查看>>
Citrix 桌面及应用虚拟化系列之一:XenServer安装
查看>>
Ext.Net学习笔记07:Ext.Net DirectMethods用法详解
查看>>
C#进阶系列——WebApi 接口测试工具:WebApiTestClient
查看>>
VBS变量名和标识符的介绍(转)
查看>>
iOS:iOS开发系列–打造自己的“美图秀秀”(下)
查看>>
Linux虚拟地址空间布局以及进程栈和线程栈总结【转】
查看>>