エラスティック検索を既存のアプリケーションに統合するのに苦労していますが、それはかなり簡単な問題です。インデックスを作成および破棄することはできますが、何らかの理由で、データをエラスティック検索に取得してクエリを実行するのに問題があります。
私は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)
最初にデータベースを作成し、インデックスを初期化してから、データを追加して、2 番目の 2 つの方法で検索しようとしています。現在、次のエラーが発生しています。
raise ElasticSearchException(response.body, response.status, response.body)
pyes.exceptions.ElasticSearchException: No handler found for uri [/transcript-index/test-course] and method [PUT]
どのようにアプローチすればよいかよくわかりません。このエラーについて見つけた唯一の参考文献は、事前にインデックスを作成することを提案していましたが、これはすでに行っていると思います。以前にこのエラーに遭遇した人はいますか? あるいは、私が気づいていないかもしれない良い場所を知っていますか?
どんな助けでも大歓迎です。