2017-03-28 1 views
1

Zum Beispiel MySQL-AbfrageElasticsearch vergleicht zwei Felder

SELECT fields_a, fields_b FROM table WHERE fields_a > fields_b; 

ich für Elasticsearch umzusetzen versuchen. Ich habe versucht, wie folgt:

$where = [ "query" => [ "filter" => [ "script" => [ "script" => "doc[\"fields_a\"].value > doc[\"fields_b\"].value" ] ] ] ]; 

Was vermisse ich?

+0

Was haben Sie versucht? –

+0

Ja, ich habe versucht, wie folgt: '$ wo = [ " abfrage "=> [ " filter "=> [ " script "=> [ " script "=>" doc [\ "fields_a \ "] .value> doc [\" fields_b \ "]. value" ] ] ] ]; ' – cikewang

+0

Was ist Ihr Fehler? Problem ? –

Antwort

1

sollte dies für mich

{ 
    "query": { 
     "bool": { 
      "must": [{ 
       "script": { 
        "script": "doc['field_a'].value > doc['field_b'].value" 
       } 
      }] 
     } 
    } 
} 

arbeiten, um nur einige Felder anstelle des gesamten Quelldokument Verwendung stored_fields"stored_fields": ["field_a","field_b"] und stellen Sie sicher, wählen Sie diese Felder als store=true in Zuordnungen zu haben.

{ 
stored_fields": ["field_a","field_b"] 
    "query": { 
     "bool": { 
      "must": [{ 
       "script": { 
        "script": "doc['field_a'].value > doc['field_b']" 
       } 
      }] 
     } 
    } 
}