是否可以在elasticsearch索引上使用AJAX和PHP实现实时搜索

我正在尝试使用 PHP 和 AJAX 制作一个网络应用程序。它应该从 Elasticsearch 检索数据而不刷新页面(实时搜索)。是否可以在elasticsearch索引上实现这样的检索?为此,我制作了这两个文件:index2.php


<?php

    session_start();

?>


<html>

 <head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title>Ajax-Trials</title>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />

 </head>

 <body>

  <div class="container">

   <br />

   <h2 align="center">Ajax Live Data Search using Jquery, PHP, Elasticsearch</h2><br />

   <div class="form-group">

    <div class="input-group">

     <span class="input-group-addon">Search</span>

     <input type="text" name="search_text" id="search_text" placeholder="Search by Customer Details" class="form-control" />


    </div>

   </div>

   <br />

   <div id="result"></div>

  </div>

 </body>

</html>



<script>

$(document).ready(function(){


 load_data();


 function load_data(query)

 {

  $.ajax({

   url:"fetch2.php",

   method:"POST",

   data:{query:query},

   success:function(data)

   {

    $('#result').html(data);

   }

  });

 }

 $('#search_text').keyup(function(){

  var search = $(this).val();

  if(search != '')

  {

   load_data(search);

  }

  else

  {

   load_data();

  }

 });

});

</script>


小怪兽爱吃肉
浏览 83回答 2
2回答

Smart猫小萌

您的 JSON 格式显示返回的数据是一个对象。要访问对象值,请编写以下代码:foreach($results as $r){&nbsp;$output .= '&nbsp;<tr><td>'.$r->_id.'</td><td>'.$r->_source->name.'</td><td>'.$r->_source->countrycode.'</td><td>'.$r->_source->district.'</td><td>'.$r->_source->population.'</td></tr>';}正如你所看到的,我使用 -> (对象)而不是 [] (数组)

猛跑小猪

我刚刚从搜索字段中删除了“人口”字段,它就起作用了。Elasticsearch 无法从数字字段中搜索数字输入。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5