2016-03-19 19 views
1

nasıl sonuç alamıyorsanız Ancak Cakephp3 ElasticSearchCakephp3 ElasticSearch Sorgu Q

yılında

http://localhost:9200/index/businesses/_search?q=services 

gibi bir sorgu ben

$this->Businesses->find('all')->where(['*'=>'services']); 

çalıştılar yapabilirim.

+0

TLDR çözebilir

$q = 'services'; $businesses = $this->Businesses->find('all')->where(function ($builder) use($q) { return $builder->query(new \Elastica\Query\SimpleQueryString($q)); }); 

inşaatçı kullanmaktır; CakephpES kullanarak bir sütun belirtmeden ES veri kaynağındaki belgeleri nasıl arayabilirim? – MontrealDevOne

cevap

0

Ne sorduğunuzdan emin değilsiniz, ancak where(['*'=>'services'])'daki yıldız işareti, tablo şema/veritabanında bir sütun adı olmalıdır.

Diğer bir yaygın sorun, find() sonucunun, tasarımın sorgusunun sonucu olmamasıdır. Cake PHP 3 needs limit option for find all method cevabım bakın ve aynı zamanda CakePHP 3 Cookbook: ElasticSearch — Searching Indexed Documents:

$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

ElasticSearch, bir sütun belirtmeden belgeleri aramanıza olanak tanır. Bir sütun belirtmeden aramak istiyorum. – MontrealDevOne

1

daha doğru cevap _all anahtar sorunu

$this->Businesses->find('all')->where(['_all'=>'services']);