gpt4 book ai didi

php - 将 Elastic Search 查询转换为 Elastica

转载 作者:行者123 更新时间:2023-12-04 13:39:05 25 4
gpt4 key购买 nike

我有一个 Elastic Search 查询:

{
"query": {
"bool": {
"must": [
{
"match": {"title": "accountant"}
},
{
"nested": {
"path": "schools",
"query": {
"bool": {
"must": [
{ "match": { "schools.school_name": "Duke University" }}
]
}}}}
]
}}}

我正在使用 php 的 Elastica 库,我想将这个原始查询转换为 Elastica。我知道我可以从 Elastica 运行原始查询,但我更喜欢使用 Elastica 类。我试过thisthis .但它们都不起作用。这是我当前代码的简化版本:

$schoolsTermFilter = new \Elastica\Filter\Term(['schools.school_name' => "Duke University"]);
$schoolsBoolFilter = new \Elastica\Filter\Bool();
$schoolsBoolFilter->addMust($schoolsTermFilter);

$nestedFilter = new \Elastica\Filter\Nested();
$nestedFilter->setPath("schools");
$nestedFilter->setFilter($schoolsBoolFilter);

$boolFilter = new \Elastica\Filter\Bool();
$boolFilter->addMust($nestedFilter);

$query->setPostFilter($boolFilter);

但是,这会返回空结果。原始查询确实返回结果,所以我知道我应该得到一些东西。有人可以帮我吗?谢谢

最佳答案

这是 QueryBuilder 版本 (>= v1.4.2.0):

$qb = new \Elastica\QueryBuilder();

$query = new \Elastica\Query(
$qb->query()->bool()
->addMust($qb->query()->match(
'title',
'accountant'
))
->addMust($qb->query()->nested()
->setPath('schools')
->setQuery(
$qb->query()->bool()
->addMust($qb->query()->match(
'schools.school_name',
'Duke University'
))
)
)
);

关于php - 将 Elastic Search 查询转换为 Elastica,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107235/

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