2017-10-15 4 views
0

Ajax를 사용하여 쿼리에 필터가있는 경우 elasticsearch에서 데이터를 검색하려고합니다. GET을 사용하고 있습니다. Ajax 400 탄성 검색 필터링 된 쿼리의 잘못된 요청

  1. 가 JSON과 같은 데이터 유형을 설정 JSON 필터를 캐릭터 라인 화
  2. 세트 : 나는 3 일을 사람들이 어떻게하는 것이 좋습니다 않았다

    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <script> 
        $(document).ready(function(){ 
         $.ajax({ 
          type: 'GET', 
          url : 'HOST/tomo2o/shop/_search', 
          crossDomain: true, 
          data: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}), 
          contentType:'application/json; charset=utf-8', 
          dataType: 'json', 
          success: function(data) { 
           console.log(data); 
          }, 
          error: function(e) { 
           console.log(e); 
          } 
         }); 
        }); 
    </script> 
    

    :

    내 코드는 다음과 같다 application/json로서의 컨텐츠 타입

(210)

하지만 난 여전히 다음과 같은 오류를 받고 있어요 :

GET HOST/tomo2o/shop/_search?{%22query%22:{%22match%22:{%22catlev1%22:%22Motors%22}}} 400 (Bad Request) 

답변

1

당신이 콘텐츠 형식

을 나타 내기 위해 source 매개 변수를 전달하고 또한 source_content_type 매개 변수를 추가 할 필요가 DSL query in the query string를 전달하려는 이렇게하면 다음과 같이 할 수 있습니다.

$.ajax({ 
     type: 'GET', 
     url : 'HOST/tomo2o/shop/_search', 
     crossDomain: true, 
     data: { 
      source: JSON.stringify({"query":{"match":{"catlev1":"Motors"}}}), 
      source_content_type: "application/json" 
     }, 
     contentType:'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function(data) { 
      console.log(data); 
     }, 
     error: function(e) { 
      console.log(e); 
     } 
    }); 
+0

많은 감사의 인사, 예상대로 작동합니다. – woshitom

+0

굉장하고, 기쁜 데 도움이되었습니다. – Val