天津11选5漏号:Elasticsearch DSL創建索引時報錯’str’ object has no attribute ‘get_analysis_definition’

作者: 魯智深 分類: java,Python 發布時間: 2018-05-14 00:31

天津11选5中奖结果 www.ebzvaz.com.cn 在定義Completion自動搜索建議字段運行報錯,應該是由于Elasticsearch DSL源代碼存在問題,所以需要去自定義一個get_analysis_definition函數。

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
from datetime import datetime
from elasticsearch_dsl import DocType, 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"])

#elasticsearch程序存在問題,這段代碼避免報錯
class CustomAnalyzer(_CustomAnalyzer):
    def get_analysis_definition(self):
        return {}

#filter=["lowercase"]大小寫轉換
ik_analyzer = CustomAnalyzer("ik_max_word", filter=["lowercase"])

class ArticleType(DocType):
    #jobbole的文章類型
    suggest = Completion(analyzer="ik_analyzer")#需要完成自動補全,就需要在mapping設置字段
    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()

生成這樣字段索引

1
2
3
4
5
6
"suggest": {
"max_input_length": 50,
"analyzer": "ik_max_word",
"preserve_position_increments": true,
"type": "completion",
"preserve_separators": true

關于Completion suggest的內容可以查看文檔鏈接

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

4條評論
  • 浪里白條

    2018 年 10 月 15 日 15:00

    還是一樣報錯啊,很奇怪我第一次執行這個腳本沒事,后面再執行就報這樣的錯誤了,無解了,兄弟

  • es

    2018 年 6 月 28 日 16:22

    我也一樣,同樣報錯,修改后還是這樣的

  • 蝦米

    2018 年 5 月 27 日 01:41

    兄弟,你的代碼測試通過了嗎?
    suggest = Completion(analyzer=ik_analyzer) 才對吧?
    而且我改了之后還是報錯呢!
    AttributeError: ‘str’ object has no attribute ‘get_analysis_definition’

    1. 魯智深

      2018 年 6 月 10 日 23:37

      測試完全沒有問題,你在試試

發表評論

電子郵件地址不會被公開。 必填項已用*標注