2

Ich habe elastische Suche installiert und ingest Plugin in meinem lokalen Server installieren. Elastische Engine läuft gut. Ich habe die folgenden Aufgaben auf:Ingest-Suche (elastische Suche) funktioniert nicht in PHP

  1. Mapping
  2. Indizierung

Jetzt bin ich bei der Suche stecken, es funktioniert nicht. Es gibt null Array zurück. Hier ist mein Code in PHP:

public function ingest_processor_searching($query) 
{ 
    $client = $this->client; 
    $params = [ 
     'index' => 'ingest_index', 
     'type' => 'attachment', 
     'body' => [ 
      'query' => [ 
       'match' => [ 
        'textField' => $query, 
       ] 
      ], 
     ], 
    ]; 

    $response = $client->search($params); 
    return $response; 
} 

Ergebnis:

{ 
"took": 7, 
"timed_out": false, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
}, 
    "hits": { 
    "total": 0, 
    "max_score": null, 
    "hits": [] 
} 
} 

Aber ich habe Daten für das GET http://localhost:9200/ingest_index/attachment/2

{ 
    "_index": "ingest_index", 
    "_type": "attachment", 
    "_id": "2", 
    "_version": 1, 
    "found": true, 
    "_source": { 
    "file_path": "/Users/selimreza/Sites/haber_dev/public/uploads/files/bower.txt", 
    "attachment": { 
     "content_type": "text/plain; charset=ISO-8859-1", 
     "language": "en", 
     "content": "Welcome to Dhaka", 
     "content_length": 18 
    }, 
    "textField": "V2VsY29tZSB0byBEaGFrYQo=" 
    } 
} 

Was ist der Fehler, den ich tat?

+0

Wenn Sie Ihre Zuordnungen zeigen könnte? – Kulasangar

Antwort

0

Versuchen Sie, die , aus Ihrer 'textField' => $query zu entfernen, da Sie nicht mehrere Werte übereinstimmen. Wenn es immer noch nicht funktioniert, versuchen Sie die term Abfrage statt match mit:

$params = [ 
     'index' => 'ingest_index', 
     'type' => 'attachment', 
     'body' => [ 
      'query' => [ 
       'term' => [ <-- have this 
        'textField' => $query <-- try removing the comma 
       ] 
      ], 
     ], 
    ];