pip安裝 elasticsearch-dsl的包, 是elasticsearch提供給python 的接口python
if __name__ == "__main__":
這個用來調試,仍是很強大的,能夠直接爲某個py文件進行單元測試??應該是這麼個意思git
本身生成一個 models的文件夾用來存放類定義,和Django差很少,這樣結構比較好github
而後爲每個爬蟲都定義它的類, 經過定義類,和scrapy中的item是對應的,而後調用 init方法,就能夠實現建立索引了django
一樣是在這裏面設置須要鏈接的elastic的服務器, 並且這裏能夠設置多個服務器,更詳細的設置應該也是能夠的,可是尚未講到服務器
這樣若是須要修改某個字段的類型或者從新設置類,直接修改完從新init一下就能夠了scrapy
又出現了錯誤,並且調試了半天:結果是這個包的版本的問題,應該按照github的說明安裝特定的版本就好了elasticsearch
真的我尼瑪, 由於咱們的elasticsearch是5.1.1的,因此這個也必須安裝5.x.x的版本函數
將數據寫入到elastic中單元測試
和django的model基本一毛同樣測試
定義一個pipeline ,而後在process_item 函數中實例化定義的elasticsearch中的type類,而後分別給字段賦值,最後直接調用save方法
把數據寫入的邏輯 定義在item的函數中,而後在pipeline中直接調用它的本身保存函數,這樣能夠增長代碼重用
#這裏python的import方式也有不少區別,同級的文件相互導入通常也得加上上級的目錄???
pipeline的順序越小,處理的順序越早
又出現了次錯誤, item裏面定義的只能用字典的keyword形式來獲取,不能用類的屬性,不然會報錯
成功存入elasticsearch, 下一步進行搜索