Как получить результаты от объекта "Elastica_ResultSet" - PullRequest
0 голосов
/ 06 марта 2012

Я использую php-клиент «astica »для ElasticSearch.

Я немного новичок в ОО-программировании, особенно в php.

Однако мне удалось найти свойсерверasticsearch, использующий php-клиентastica и сохраняющий ответ в объекте "Elastica_ResultSet".Мне не повезло, когда я получал доступ к содержимому этого объекта.

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

Ссылку на класс 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');
?>

Ответы [ 2 ]

3 голосов
/ 22 июня 2012

Таким образом, вы можете использовать var_export для вывода вашего набора результатов

Но в общем случае поискastica возвращает объект Elastica_ResultSet, который имеет несколько атрибутов, которые вы можете использовать, например, count, totalHits facets и т. Д.

, а также содержит массив объектов Elastica_Result, доступ к которым можно получить либо путем вызова метода getResults () Elastica_ResultSet, либо с помощью методов 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 голосов
/ 25 мая 2012

После нескольких месяцев практики ОО, казалось, что выполнение простого var_dump ($ resultSet) предоставило бы мне структуру и содержимое возвращаемого объекта ... не могу поверить, что никто не высказал никаких предположений относительно такого базовоговопрос;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...