2016-03-19 12 views
1

Wie kann ich eine Abfrage wieCakephp3 Elasticsearch Abfrage Q

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

in Cakephp3 Elasticsearch

ich versucht habe

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

Jedoch habe ich keine Ergebnisse erhalten.

+0

TLDR lösen könnte; Wie suche ich Dokumente aus ES Datenquelle ohne Angabe einer Spalte mit CakephpES? – MontrealDevOne

Antwort

0

Nicht sicher, was Sie fragen, aber der Stern in where(['*'=>'services']) sollte ein Spaltenname in Ihrer Tabelle Schema/Datenbank sein.

Ein weiteres häufiges Problem ist, dass das Ergebnis find() nicht das Ergebnis der Abfrage von Entwurf ist. Siehe meine Antwort auf Cake PHP 3 needs limit option for find all method und auch 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

Mit ElasticSearch können Sie Dokumente durchsuchen, ohne eine Spalte anzugeben. Ich möchte ohne Angabe einer Spalte suchen. – MontrealDevOne

1

Die genauere Antwort ist ein Baumeister zu verwenden

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

Der _all Taste, um das Problem

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