我在使用與現有應用程序集成的彈性搜索時遇到了一些麻煩,但它應該是一個相當直接的問題。我能夠創建和銷燬索引,但出於某種原因,我無法將數據導入到彈性搜索和查詢中。彈性搜索[PUT]錯誤
我正在使用pyes庫,並誠實地找到文檔在這方面不太有用。這是我當前的代碼:
def initialize_transcripts(database, mapping):
database.indices.create_index("transcript-index")
def index_course(database, sjson_directory, course_name, mapping):
database.put_mapping(course_name, {'properties': mapping}, "transcript-index")
all_transcripts = grab_transcripts(sjson_directory)
video_counter = 0
for transcript_tuple in all_transcripts:
data_map = {"searchable_text": transcript_tuple[0], "uuid": transcript_tuple[1]}
database.index(data_map, "transcript-index", course_name, video_counter)
video_counter += 1
database.indices.refresh("transcript-index")
def search_course(database, query, course_name):
search_query = TermQuery("searchable_text", query)
return database.search(query=search_query)
我首先創建數據庫,初始化索引,然後嘗試添加數據,並與第二兩種方法搜索。目前,我發現了以下錯誤:
raise ElasticSearchException(response.body, response.status, response.body)
pyes.exceptions.ElasticSearchException: No handler found for uri [/transcript-index/test-course] and method [PUT]
我不太知道如何處理它,我能找到這個錯誤的唯一參考建議事先創建索引,我相信我已經在做。有沒有人遇到過這個錯誤?或者,你是否知道任何我可能不知道的好地方?
任何幫助表示讚賞。
不是一個答案,但我已經查看了一些彈性搜索庫,並且沒有一個是使用請求模塊與它進行交互的重大改進。有了彈性搜索的複雜的DSL,圖書館就有這麼多功能。一般來說你是如何找到皮耶斯的? –
說實話,不是太棒了。它使簡單的事情變得微不足道,但文檔通常是缺乏的,它似乎混淆了ES擴展的許多有用的功能。您是否有任何資源僅通過請求模塊進行交互?我想我可能想切換到那個。 python中的 –
這真的很容易。沒有任何最喜歡的鏈接,但谷歌可能是你的朋友。通過請求可以輕鬆發佈到帶有json有效內容的ES(查詢)。當你開始處理大量過濾器和facet時(僅限於IMO),將請求邏輯作爲json文檔並將其傳遞給ES非常好 - 就像在關係數據庫中存儲過程一樣。還愛python json庫將結果反序列化爲字典! –