2013-06-04 7 views
1

탄성 검색을 기존 응용 프로그램과 통합하는 데 문제가 있지만 상당히 간단한 문제 여야합니다. 색인을 생성하고 삭제할 수는 있지만 어떤 이유로 데이터를 탄성 검색 및 쿼리하는 데 문제가 있습니다.탄성 검색 [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] 

내가 그것을 접근하는 방법을 아주 잘 모르겠습니다을, 나는이 오류를 찾을 수있는 유일한 참조는 내가 이미하고있는 중이 믿는 사전에 인덱스를 생성 제안했다. 이전에이 오류가 발생 했나요? 또는 내가 모를 수도있는 좋은 곳을 알고 있습니까?

도움을 주시면 감사하겠습니다.

+0

대답은 아니지만 elasticsearch 용 라이브러리 몇 개를 살펴본 결과 요청 모듈을 사용하여 상호 작용하는 것보다 큰 개선이 없었습니다. Elastic Search의 복잡한 DSL에는 라이브러리가 할 일이 너무 많습니다. 당신은 일반적으로 어떻게 분노를 발견 했습니까? –

+0

솔직히 말해서, 환상적이 아닙니다. 단순한 일을 간단하게 만들지 만 문서는 일반적으로 부족하고 ES에서 확장 된 유용한 기능을 많이 혼란스럽게합니다. 요청 모듈을 통해서만 상호 작용할 수있는 자원이 있습니까? 나는 그걸로 전환하고 싶을 것 같아. 파이썬에서 –

+0

정말 쉽습니다. 좋아하는 링크가 없지만 Google은 아마 당신의 친구입니다. 요청을 통해 json 페이로드 (쿼리)를 사용하여 ES에 쉽게 게시 할 수 있습니다. 당신이 필터 톤과 패싯을 다루기 시작하면 (ja) IM에 대해서만 요청 로직을 json 문서로 가지고 ES에 전달하는 것이 좋다. 관계형 DB에 저장된 proc과 비슷하다. 또한 결과를 dicture로 deserialising하기위한 python json 라이브러리를 좋아합니다! –

답변

3

어떤 이유로 시작 설명서에 나와있는 사실 (http://pyes.readthedocs.org/en/latest/manual/usage.html)에도 불구하고 인덱스에 ID를 추가해도 실제로이 오류가 발생합니다.

index에 대한 video_counter 인수를 제거하면 완벽하게 작동합니다.

+0

이상한, 지금 당신의 문서에 대한 ID로 사용하고있는 것을 확인하십시오. 아마도 자동 생성되고, 원하는 것이 아닐 수도 있습니다. – javanna

+0

그것은 자동으로 생성 된 것으로 보이지만, 나는 대처할 때 너무 많은 두통을 피하려고합니다. –