【问题标题】:How to get results from "Elastica_ResultSet" object如何从“Elastica_ResultSet”对象中获取结果
【发布时间】:2012-03-24 02:53:08
【问题描述】:

我正在为 ElasticSearch 使用“elastica”php 客户端。

我对 OO 编程有点陌生,尤其是 php。

但是,我已经设法使用 elastica php 客户端搜索我的 elasticsearch 服务器,并将响应存储在“Elastica_ResultSet”对象中。我无法访问该对象的内容。

我希望能够列出结果总数,找到结果的弹性搜索记录 id 并获取该结果的弹性搜索记录的完整内容。

Elastica 类参考可以在这里找到http://ruflin.github.com/Elastica/api/index.html,虽然我不知道如何处理它。

这是我一直使用的 php 代码:

<?php
function __autoload_elastica ($class) {
    $path = str_replace('_', '/', $class);

    if (file_exists('extentions/' . $path . '.php')) {
        require_once('extentions/' . $path . '.php');
        //echo "$path EXISTS!!!";
    }
}
spl_autoload_register('__autoload_elastica');

// New ES Client
$client = new Elastica_Client();

// Set Index
$index = $client->getIndex('test1');

// Set Document Type
$type = $index->getType('user');

// Perform Search
$resultSet = $index->search('halo');
?>

【问题讨论】:

    标签: php object elasticsearch


    【解决方案1】:

    所以基本上你可以使用 var_export 来输出你的结果集

    但一般而言,elastica 搜索会返回一个 Elastica_ResultSet 对象,该对象具有您可以使用的多个属性,例如 count、totalHits 方面等等。

    还包含一个 Elastica_Result 对象数组,可以通过调用 Elastica_ResultSet getResults() 方法或使用 current() 和 next() 方法或简单地使用 php foreach 函数来访问这些对象

    Elastica_Result 是结果的数据,也有几种方法可以使用。 getId()、getVersion()、getData() 等等。

    // Set Document Type
    $type = $index->getType('user');
    
    // Perform Search
    $resultSet = $index->search('halo');
    
    // Get IDs
    $resultIDs = array();
    foreach($resultSet as $result){
        $resultIDs[] = $result->getId();
    }
    

    我想让你知道一些对我来说有点难以理解的东西。 查询和结果排序

    // Set the query terms for your search
    $queryTerm = new Elastica_Query_Terms();
    $queryTerm->setTerms('user', array("test", "test1"));
    
    // Create the sorting array
    $sort = array("user" => array("order" => "desc"));
    
    // Create the query
    $query = Elastica_Query::create($queryTerm);
    
    // Set the sorting to the query
    $query->setSort($sort);
    
    // Perform the search
    $resultSet = $index->search($query);
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      经过几个月的 OO 实践,执行一个简单的 var_dump($resultSet) 似乎可以为我提供返回对象的结构和内容......不敢相信没有人对这样一个基本的问题提出任何建议问题;)

      【讨论】:

      • 使用 var_dump 时的另一个提示是确保在开发环境中配置了 xDebug。它将嵌套和语法突出显示您的 var_dump() 调用并使它们更易于阅读。
      猜你喜欢
      • 2017-08-06
      • 2019-07-14
      • 2016-12-10
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多