2016-03-19 35 views
1

は、どのように私は何の結果を得るていないしかしCakephp3 ElasticSearchCakephp3 ElasticSearchクエリQ

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

のようなクエリは、私が

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

を試してみました作るのですか。

+0

TLDRを解決する可能性があります

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

ビルダーを使用することです。どのように私はCakephpESを使用して列を指定せずにESデータソースからドキュメントを検索するには? – MontrealDevOne

答えて

0

ないあなたが求めているものを確認してください、しかしwhere(['*'=>'services'])のアスタリスクは、あなたのテーブルスキーマ/データベースの列名でなければなりません。

もう1つのよくある問題は、find()の結果が設計上のクエリの結果ではないことです。 Cake PHP 3 needs limit option for find all methodに私の答えを参照しても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は、あなたが列を指定せずに文書を検索することができます。私は列を指定せずに検索したいです。 – MontrealDevOne

1

より正確な答えは_allキーが問題

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