文档章节

python-elasticsearch从创建索引到写入数据

d
 dragon_tech
发布于 03/07 16:16
字数 823
阅读 262
收藏 1

创建索引
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://blog.csdn.net/diyiday/article/details/82153780

d
粉丝 4
博文 433
码字总数 12572
作品 0
西安
私信 提问
一行命令:从 ELK 迁移日志服务

概述 日志服务相比自建 ELK 在功能、性能、规模和成本等方面有诸多优势,参阅自建ELK vs 日志服务(SLS)全方位对比。对于已经存储在 Elasticsearch 中的数据,用户只需要一行命令就能方便地将...

吴波bruce_wu
2018/08/09
0
0
Scrapy分布式爬虫打造搜索引擎-(八)elasticsearch结合django搭建搜索引擎

Python分布式爬虫打造搜索引擎 基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站 推荐前往我的个人博客进行阅读:http://blog.mtianyan.cn/ 目录分章效果更佳哦 分章查看...

天涯明月笙
2017/07/01
0
0
Flask 教程 第十六章:全文搜索

本文转载自:https://www.jianshu.com/p/56cfc972d372 这是Flask Mega-Tutorial系列的第十六部分,我将在其中为Microblog添加全文搜索功能。 本章的目标是为Microblog实现搜索功能,以便用户...

天降攻城狮
02/23
0
0
在 Python 中使用 Elasticsearch

在这篇文章中,我将讨论 Elasticsearch 以及如何将其整合到不同的 Python 应用程序中。 什么是 ElasticSearch? ElasticSearch(ES)是一个建立在 Apache Lucene 之上的高度可用的分布式开源...

xjtuhit
2018/06/13
0
0
Elasticsearch简介与实战

什么是Elasticsearch?   Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。   Lucene 可以说是当下最先进、高性能、全功能的搜索引...

但盼风雨来_jc
03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部