2015-04-28 3 views
1

Я пытаюсь запросить ElasticSearch с помощью ajax, но я получаю тот же результат всегда, даже если я изменяю запрос, он остается таким же. Похоже, что часть матча не выполняется. Потому что, если я добавлю больше полей, таких как дата выпуска, я получаю эти данные.ElasticSearch запрос ajax всегда возвращает тот же результат

Вот HTML код:

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
     <h1>Search Result!</h1> 
     <br /> 
     <input id="searchterm" /> 
    <button id="search">search</button> 
    <div id="results"></div> 
    <script> 
     $("#search").click(function(e){ 
     var data = { 
       query:{match:{_all:$('#searchterm').val()}}, 
       pretty: true, 
       fields: '_id' 
       }; 

       alert(JSON.stringify(data)); 

       $.ajax({ 
       url: 'http://localhost:9200/movies/_search', 
       dataType: 'jsonp', 
       type: 'POST', 
       crossDomain: true, 
       data: data, 
       success: function(data) { 
        //alert(""+JSON.parse(data.hits.total)); 
        $("#results").empty(); 
        $("#results").append("<p>Results for <b>" + $("#searchterm").val() + "</b></p>"); 
        $.each(data.hits.hits, function(i,item){ 
        $("#results").append("<div><a href='#'>" + item._id + "</a></div>"); 
        }); 
       } 
       }); 
      }); 
    </script> 

</body> 
</html> 

Выход Результат:

Поиск!

Результатов для бешеного

Повстанческих (2015)

Звездных войн: Эпизод VII - Сила пробуждается (2015)

Ant-Man (2015)

Jurassic World (2015)

Золушка (2015)

Сорвиголова (2003)

Get Hard (2015)

Мстители: Возраст Ultron (2015)

Бэтмен против Супермена: Dawn юстиции (2016)

Home (2015)

Результат не имеет отношения к введенному ключевому слову, на выходе должны быть все фильмы, которые содержат в ярости имя фильма. Но все же я получаю первые 10 фильмов.

Любое предложение может быть большой помощью.

ответ

1

Я получил эту штуку работать, я перечислил изменения ниже:

  1. Изменение JSONP для JSon
  2. Добавлена ​​CONTENTTYPE: 'приложения/JSON' в Ajax запроса
  3. Удалить хорошенькая: правда от данных, поскольку это давало ошибку синтаксического анализа.
  4. формат Изменить данные JSON.stringify (данные)

Анализируются путем наблюдения заголовка запроса в инструмент разработчика Chrome.

Вот рабочий код:

<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
     <h1>Search Result!</h1> 
     <br /> 
     <input id="searchterm" /> 
    <button id="search">search</button> 
    <div id="results"></div> 
    <script> 
     $("#search").click(function(e){ 
     var data = { 
       query:{match:{_all:$('#searchterm').val()}}, 
       fields: '_id' 
       }; 

       alert(JSON.stringify(data)); 

       $.ajax({ 
       url: 'http://localhost:9200/movies/_search', 
       dataType: 'json', 
       type: 'POST', 
       contentType: 'application/json', 
       crossDomain: true, 
       data: JSON.stringify(data), 
       success: function(data) { 
        //alert(""+JSON.parse(data.hits.total)); 
        $("#results").empty(); 
        $("#results").append("<p>Results for <b>" + $("#searchterm").val() + "</b></p>"); 
        $.each(data.hits.hits, function(i,item){ 
        $("#results").append("<div><a href='#'>" + item._id + "</a></div>"); 
        }); 
       } 
       }); 
      }); 
    </script> 

</body> 
</html> 

Я надеюсь, что это помогает кому-то.

Смежные вопросы