Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 弹性搜索[PUT]错误_Python_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Put_Pyes - Fatal编程技术网 elasticsearch,put,pyes,Python,elasticsearch,Put,Pyes" /> elasticsearch,put,pyes,Python,elasticsearch,Put,Pyes" />

Python 弹性搜索[PUT]错误

Python 弹性搜索[PUT]错误,python,elasticsearch,put,pyes,Python,elasticsearch,Put,Pyes,我在将弹性搜索与现有应用程序集成时遇到了一些问题,但这应该是一个相当简单的问题。我能够创建和销毁索引,但由于某些原因,我无法将数据放入弹性搜索和查询中 我正在使用pyes库,并且诚实地发现文档在这方面没有什么帮助。这是我当前的代码: def initialize_transcripts(database, mapping): database.indices.create_index("transcript-index") def index_course(database, sjs

我在将弹性搜索与现有应用程序集成时遇到了一些问题,但这应该是一个相当简单的问题。我能够创建和销毁索引,但由于某些原因,我无法将数据放入弹性搜索和查询中

我正在使用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]
我不太确定如何处理它,我能找到的关于这个错误的唯一参考建议是事先创建索引,我相信我已经在这样做了。以前有人遇到过这个错误吗?或者,你知道我可能不知道的好地方吗


非常感谢您的帮助。

出于某种原因,将ID添加到索引中,尽管它显示在起始文档中:()不起作用,事实上会导致此错误


一旦我删除了索引的video_反参数,这就非常有效了。

奇怪,请检查您现在使用的文档id,它可能是自动生成的,而这可能不是您想要的。它似乎是自动生成的,但我已经从pyes移走了,这是一个非常头痛的问题,没有答案,但我已经查看了elasticsearch的一些库,没有一个比使用requests模块与it交互有很大改进。有了弹性搜索的复杂DSL,图书馆有很多事情要做。一般来说,你是如何找到派斯的?老实说,这并不奇怪。它使简单的事情变得微不足道,但是文档通常是缺乏的,并且它似乎混淆了许多由ES扩展的有用功能。您是否拥有仅通过请求模块进行交互的资源?我想我可能想切换到这个模式。在python中,这非常简单。没有任何喜欢的链接,但谷歌可能是你的朋友。请求使得使用json负载(查询)发布到ES变得很容易。当您开始处理大量过滤器和方面时(仅限IMO),将请求逻辑作为json文档,然后将其传递给ES,这相当不错——有点像关系数据库中的存储过程。还喜欢python json库将结果反序列化为dict!!!喜欢“让简单的事情变得琐碎”的评论——只是写了一篇关于为什么我们应该使用Elastic Seach而不是Solr的董事会报告——我认为Solr也让简单的事情变得容易,但复杂的事情变得困难——ElasticSearch有一个更简单的困难——没有什么是真正容易的,但DSL最终让复杂的事情变得更加简单。感谢您提出的直接使用请求的建议。我改用它而不是pyes,我从来没有这么开心过。他们的restapi也有非常好的文档记录。