弹性搜索[PUT]错误

时间:2013-06-04 14:30:38

标签: python elasticsearch put pyes

我在使用现有应用程序集成弹性搜索方面遇到了一些麻烦,但它应该是一个相当简单的问题。我能够创建和销毁索引,但出于某种原因,我无法将数据转换为弹性搜索并查询它。

我正在使用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]

我不太确定如何处理它,我唯一可以找到这个错误的参考建议事先创建你的索引,我相信我已经在做了。有没有人遇到过这个错误?或者您知道我可能不知道的任何好看的地方吗?

感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

出于某种原因,将ID添加到索引中,尽管它在起始文档中显示:(http://pyes.readthedocs.org/en/latest/manual/usage.html)不起作用,实际上会导致此错误。

一旦我将video_counter参数移除到索引,这就完美无缺。