elasticsearch-dsl-py实现python对接

作者: 鲁智深 分类: java,Python 发布时间: 2018-05-13 21:29

Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询。它建立在官方低级客户端(elasticsearch-py)之上。

它提供了一种更方便和习惯的方式来编写和操作查询。它接近Elasticsearch JSON DSL,反映了它的术语和结构。它直接使用定义的类或类似查询集的表达式来暴露从Python的DSL的整个范围。

它还提供了一个可选的包装器,用于将文档作为Python对象进行处理:定义映射,检索和保存文档,将文档数据封装在用户定义的类中。github地址

要使用其他Elasticsearch API(例如,集群运行状况),只需使用底层客户端即可。

上面是elasticsearch-dsl-py的介绍,如果有用过django的框架,那么理解elasticsearch-dsl-py也是非常容易的。

下面我们尝试编写py文件mapping一个索引到Elasticsearch

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
from datetime import datetime
from elasticsearch_dsl import DocType, Date, Nested, Boolean, \
    analyzer, InnerDoc, Completion, Keyword, Text,Integer

from elasticsearch_dsl.connections import connections
connections.create_connection(hosts=["localhost"])

class ArticleType(DocType):
    #jobbole的文章类型
    h1 = Text(analyzer="ik_max_word")
    create_time = Date()
    likes = Integer()
    match_bookmark = Integer()
    comments_bookmark = Integer()
    category_tag_itme = Text()
    img_url = Keyword()
    img_url_path = Keyword()
    detail_url = Keyword()

    class Meta:
        index = "jobbole"
        doc_type = "article"

if __name__ == '__main__':
    ArticleType.init()

orm映射机制几乎和django一模一样,mate中定义了数据库index和表type

elasticsearch-head

elasticsearch-head

在elasticsearch-head中就能查看到数据索引信息

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注