gpt4 book ai didi

php - 如何制作分页elasticsearch?

转载 作者:搜寻专家 更新时间:2023-10-31 20:36:41 24 4
gpt4 key购买 nike

我是 elasticsearch 的新手。

我尝试制作真正的应用程序。我正在使用 elasticsearch-php
https://github.com/elastic/elasticsearch-php

我不会做分页。

我的代码:

<?php
require_once 'app/init.php';

if(isset ($_GET['q'])) {

$q = $_GET['q'];

$query = $es->search([
'index' => 'user',
'type' => 'profile',
'body' => [
'query' => [
'bool' => [
'should' => [
'match' => ['bio' => $q]
]
]
]
]
]);
if ($query['hits']['total'] >=1) {
$results= $query['hits']['hits'];
}

}

?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Search | ES</title>
</head>
<body>
<form class="" action="index.php" method="get" autocomplete="off">
<label for="">
Search
<input type="text" name="q">
</label>
<input type="submit" value="search">
</form>
<?php
if (isset($results)) {
foreach ($results as $r) {
?>
<div class="result">
<?php echo $r['_source']['bio']; ?>
</div>
<?php
}
}
?>
</body>
</html>

以及如何像这样进行分页:

View image Pagination like github

最佳答案

您在这里需要两件事,总页数和从一页导航到另一页的方式。当您使用简单的 Query->filter->bool

查询 elasticsearch 时

它在响应 JSON 中返回命中,即结果总数。将它们除以您要在 App 上显示的结果数,您将获得页面。

在您的 PHP-elasticsearch 请求对象中使用 from 和 size 属性,并在页面之间导航时不断更改 from 。示例查询(考虑第 3 页和页面大小 10)

{
"from": 20,
"size": 10,
"query": {
"bool": {
"must": [
{
"term": {
"FIELD": {
"value": "VALUE"
}
}
}
]
}
}
}

关于php - 如何制作分页elasticsearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33440552/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com