zoukankan      html  css  js  c++  java
  • es更新说明(dsl)

    一.旧版elasticsearch-dsl
    很多同学在python搜索引擎视频中关于看到的第十章elasticsearch使用中使用python创建mapping老师使用的以下代码,这些代码对于elasticsearch-dsl的引用已经失效,会报异常错误

    from datetime import datetime
    from elasticsearch_dsl import Document, Date, Nested, Boolean, 
        analyzer, InnerDoc, Completion, Keyword, Text,Integer
    
    from elasticsearch_dsl.analysis import CustomAnalyzer as _CustomAnalyzer
    
    from elasticsearch_dsl.connections import connections
    connections.create_connection(hosts=["localhost"])
    
    # class CustomAnalyzer(_CustomAnalyzer):
    #     def get_analysis_definition(self):
    #         return {}
    
    
    # ik_analyzer = CustomAnalyzer("ik_max_word", filter=["lowercase"])
    class ArticleType(Document):
        #伯乐在线文章类型
        # suggest = Completion(analyzer=ik_analyzer)
        title = Text(analyzer="ik_max_word")
        create_date = Date()
        url = Keyword()
        url_object_id = Keyword()
        front_image_url = Keyword()
        front_image_path = Keyword()
        praise_nums = Integer()
        comment_nums = Integer()
        fav_nums = Integer()
        tags = Text(analyzer="ik_max_word")
        content = Text(analyzer="ik_max_word")
    
        class Meta:
            index = "jobbole"
            doc_type = "article"
    
    if __name__ == "__main__":
        ArticleType.init()
    

    二.引用更正以及代码
    1.最新版elasticsearch-dsl下载地址:
    es-dsl对应的github地址
    2.最新版构建jobbole的mapping代码

    # -*- coding: utf-8 -*-
    __author__ = 'yh'
    from datetime import datetime
    from elasticsearch_dsl import Document, Date, Integer, Keyword, Text, connections
    
    # Define a default Elasticsearch client
    connections.create_connection(hosts=['localhost'])
    
    class ArticleType(Document):
        #伯乐在线文章类型
        # suggest = Completion(analyzer=ik_analyzer)
        title = Text(analyzer="ik_max_word")
        create_date = Date()
        url = Keyword()
        url_object_id = Keyword()
        front_image_url = Keyword()
        front_image_path = Keyword()
        praise_nums = Integer()
        comment_nums = Integer()
        fav_nums = Integer()
        tags = Text(analyzer="ik_max_word")
        content = Text(analyzer="ik_max_word")
    
        class Index:
            name = 'jobbole'
            settings = {
              "number_of_shards": 5,
            }
    # create the mappings in elasticsearch
    if __name__ == "__main__":
        ArticleType.init()
    

    关于接下来的elasticsearch-dsl使用说明
    新版elasticsearch-dsl上边是这样写

    from ArticleSpider.models.es_types import ArticleType
    from elasticsearch_dsl.connections import connections
    # 与ElasticSearch进行连接,生成搜索建议
    es = connections.create_connection(ArticleType)
    

    新版elasticsearch-dsl下边是这样写

    def gen_suggests(index,info_tuple):
        #根据字符串生成搜索建议数组
        used_words = set()
        suggests = []
        for text, weight in info_tuple:
            if text:
                #调用es的analyze接口分析字符串
                words = es.indices.analyze(index="jobbole",
                                           body={"analyzer": "ik_max_word", "text": "{0}".format(text)})
                anylyzed_words = set([r["token"] for r in words["tokens"] if len(r["token"])>1])
            new_words = anylyzed_words - used_words
            else:
                new_words = set()
    
            if new_words:
                suggests.append({"input":list(new_words), "weight":weight})
    
        return suggests
    

    然后调用这样写

     article.suggest = gen_suggests(ArticleType, ((article.title, 10), (article.tags, 7)))
    
                article.save()
  • 相关阅读:
    对websoceket进行压力测试(一)
    学习springboot的一个网站
    重装mysql数据库
    websocket扫盲:基础知识(二)
    json-lib 之jsonConfig详细使用
    hibernate的like用法(用占位符解决)
    【转载】hibernate查询参数绑定
    Struts2 Anotation action
    PLSQL怎样导出oracle表结构
    从命令行启动oracle服务
  • 原文地址:https://www.cnblogs.com/vinic-xxm/p/11818172.html
Copyright © 2011-2022 走看看