首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp3 ElasticSearch查询队列

Cakephp3 ElasticSearch查询队列
EN

Stack Overflow用户
提问于 2016-03-19 20:49:36
回答 2查看 612关注 0票数 1

如何进行如下查询

代码语言:javascript
复制
http://localhost:9200/index/businesses/_search?q=services

在Cakephp3 ElasticSearch中

我试过了

代码语言:javascript
复制
$this->Businesses->find('all')->where(['*'=>'services']);

然而,我没有得到任何结果。

EN

回答 2

Stack Overflow用户

发布于 2016-03-20 19:24:27

更准确的答案是使用构建器

代码语言:javascript
复制
    $q = 'services'; 
    $businesses = $this->Businesses->find('all')->where(function ($builder) use($q) {
            return $builder->query(new \Elastica\Query\SimpleQueryString($q));
        });

_all键可能会解决这个问题

代码语言:javascript
复制
$this->Businesses->find('all')->where(['_all'=>'services']);
票数 1
EN

Stack Overflow用户

发布于 2016-03-20 03:08:44

不知道您在问什么,但是where(['*'=>'services'])中的星号应该是表模式/数据库中的列名。

另一个常见的问题是,find()的结果并非设计为查询的结果。请参阅我对Cake PHP 3 needs limit option for find all methodCakePHP 3 Cookbook: ElasticSearch — Searching Indexed Documents的回答:

代码语言:javascript
复制
$query = $this->Articles->find()
    ->where([
        'title' => 'special',
        'or' => [
            'tags in' => ['cake', 'php'],
            'tags not in' => ['c#', 'java']
        ]
    ]);

// The query returns multiple rows which you can loop through
//  or alternatively you can call $query->all(); to get the object
//                                $query->toArray(); to get the array
foreach ($query as $article) {
    echo $article->title;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36101949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档