Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Elastica正确运行_count uu查询?_Php_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Elastica - Fatal编程技术网 elasticsearch,elastica,Php,Search,elasticsearch,Elastica" /> elasticsearch,elastica,Php,Search,elasticsearch,Elastica" />

Php 如何使用Elastica正确运行_count uu查询?

Php 如何使用Elastica正确运行_count uu查询?,php,search,elasticsearch,elastica,Php,Search,elasticsearch,Elastica,我一直在使用ElasticSearch和Elastica()组合我们的搜索实现 目前,我很难弄清楚如何执行计数搜索,正如ElasticSearch的计数API所述 有人能帮我澄清一下吗?一些示例代码会很好,因为我还不是100%了解所有Elastica对象之间的关系 提前感谢。您可以使用搜索类()使用elastica执行elasticsearch\u类型计数查询() 您可以在搜索类上调用count($query,$fullResult=false)方法,以搜索类型count运行查询。默认情况下,只

我一直在使用ElasticSearch和Elastica()组合我们的搜索实现

目前,我很难弄清楚如何执行计数搜索,正如ElasticSearch的计数API所述

有人能帮我澄清一下吗?一些示例代码会很好,因为我还不是100%了解所有Elastica对象之间的关系


提前感谢。

您可以使用搜索类()使用elastica执行elasticsearch\u类型计数查询()

您可以在搜索类上调用count($query,$fullResult=false)方法,以搜索类型count运行查询。默认情况下,只返回总命中数。如果$fullResult设置为true,则返回包含方面的完整结果集。这比运行大小设置为零的标准搜索更有效

例如,要获取查询的命中率,可以执行以下操作:

// Define a Query. E.g. a string query.
$elasticaQueryString = new \Elastica\Query\QueryString();

//'And' or 'Or' default : 'Or'
$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery('london');

// Create the actual search query object with some data.
$elasticaQuery = new \Elastica\Query();
$elasticaQuery->setQuery($elasticaQueryString);

// Setup elastica client connection to your easticsearch server (with default host and port)
$elasticaClient = new \Elastica\Client();

// Create an elastica search object
$elasticaSearch = new \Elastica\Search($elasticaClient);

// Call count method on search object to run a
$count = $elasticaSearch->count($elasticaQuery);

// output count
echo "<p>$count<p>";
//定义一个查询。例如,字符串查询。
$elasticaQueryString=new\Elastica\Query\QueryString();
//'和'或'或'默认:'或'
$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery('london');
//使用一些数据创建实际的搜索查询对象。
$elasticaQuery=new\Elastica\Query();
$elasticaQuery->setQuery($elasticaQueryString);
//设置与easticsearch服务器的elastica客户端连接(使用默认主机和端口)
$elasticaClient=new\Elastica\Client();
//创建elastica搜索对象
$elasticaSearch=new\Elastica\Search($elasticaClient);
//对搜索对象调用计数方法以运行
$count=$elasticaSearch->count($elasticasquery);
//输出计数
回声“$count”;
一个更有用的示例可能是返回带有某些方面的完整结果集,并将其限制为某个索引和类型:

// Define a Query. e.g. a string query.
$elasticaQueryString = new \Elastica\Query\QueryString();

//'And' or 'Or' default : 'Or'
$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery('london');

// Create some facets to be generated by query
$elasticaFacet1 = new \Elastica\Facet\Terms('myFacet1');
$elasticaFacet1->setField('colour');
$elasticaFacet1->setSize(10);

$elasticaFacet2 = new \Elastica\Facet\Terms('myFacet2');
$elasticaFacet2->setField('shape');
$elasticaFacet2->setSize(10);

// Create the actual search object with some data.
$elasticaQuery = new \Elastica\Query();

// add query string to query
$elasticaQuery->setQuery($elasticaQueryString);

//add facets to query
$elasticaQuery->addFacet($elasticaFacet1);
$elasticaQuery->addFacet($elasticaFacet2);

// Setup elastica client connection to your elasticsearch server
$elasticaClient = new \Elastica\Client(array(
    'host' => 'localhost',
    'port' => 9200
));

// If you want to restrict your search to a particular index then get that
$elasticaIndex = $elasticaClient->getIndex('myIndex');

// If you want to restrict your search to a particular type then get that
$elasticaType = $elasticaIndex->getType('myType');

// Create and elastica Search object
$elasticaSearch = new \Elastica\Search($elasticaClient);

// addIndex and addType are optional and will restrict the search to those respectivly
$countResults = $elasticaSearch->addIndex($elasticaIndex)->addType($elasticaType)->count($elasticaQuery, true);

//output total hits
echo "<p>{$countResults->getTotalHits()}</p>";

//output list of facets
echo "<ul>";
foreach ($countResults->getFacets() as $facetField => $resultTerms) {
    echo "<li><span>$facetField</span><ul>";
    foreach ($resultTerms['terms'] as $resultTerm) {
        echo "<li>{$resultTerm['term']}: {$resultTerm['count']}</li>";
    }
    echo "</ul></li>";
}
echo "</ul>";
//定义一个查询。e、 g.字符串查询。
$elasticaQueryString=new\Elastica\Query\QueryString();
//'和'或'或'默认:'或'
$elasticaQueryString->setDefaultOperator('AND');
$elasticaQueryString->setQuery('london');
//创建一些要通过查询生成的方面
$elasticaFacet1=new\Elastica\Facet\Terms('myFacet1');
$elasticaFacet1->设置字段(“颜色”);
$elasticaFacet1->setSize(10);
$elasticaFacet2=new\Elastica\Facet\Terms('myFacet2');
$elasticaFacet2->setField('shape');
$elasticaFacet2->setSize(10);
//使用一些数据创建实际的搜索对象。
$elasticaQuery=new\Elastica\Query();
//将查询字符串添加到查询
$elasticaQuery->setQuery($elasticaQueryString);
//向查询添加方面
$elasticaQuery->addFacet($elasticaFacet1);
$elasticaQuery->addFacet($elasticaFacet2);
//设置elastica客户端与elasticsearch服务器的连接
$elasticaClient=new\Elastica\Client(数组)(
'主机'=>'本地主机',
“端口”=>9200
));
//如果你想限制你的搜索到一个特定的索引,然后得到它
$elasticaIndex=$elasticaClient->getIndex('myIndex');
//如果你想限制你的搜索到一个特定的类型,然后得到它
$elasticaType=$elasticaIndex->getType('myType');
//创建和删除elastica搜索对象
$elasticaSearch=new\Elastica\Search($elasticaClient);
//addIndex和addType是可选的,将分别限制搜索
$countResults=$elasticaSearch->addIndex($elasticaIndex)->addType($elasticaType)->count($elasticaQuery,true);
//输出总点击数
echo“{$countResults->getTotalHits()}

”; //面的输出列表 回声“
    ”; foreach($countResults->getFacets()作为$facetField=>$resulterms){ 回声“
  • $facetField
      ”; foreach($resulterms['terms']作为$resulterm){ echo“
    • {$resulterm['term']}:{$resulterm['count']}
    • ”; } 回声“
  • ”; } 回声“
”;
使用Elastica 2.2,您可以执行以下操作:

public function count($index)
{
    $query = new Elastica\Query;
    $query->setSize(0);
    $results = $index->search($query);
    $count = $results->getTotalHits();

    return $count;
}