2017-01-23 1 views
0
{"query": 
    {"filtered": 
    {"filter": 
     {"or": 
     [{"term":{"id_admin":255}},{"term":{"id_user":255}}] 
     }, 
    "query": 
     {"bool": 
     {"must": 
      [{"match":{"striped":"sentence"}}] 
     } 
     } 
    } 
    } 
} 

Abfrage gibt Eintrag, in dem id_admin oder id_user 255 und striped = Satz.Kann diese Elasticsearch Abfrage optimiert werden?

Wir verwenden Version 2.3.1.

Kann diese Abfrage optimiert werden?

Antwort

0

Wenn Sie ES 2.3.1 verwenden, der richtige Weg, um diese Abfrage zu schreiben, ist wie folgt:

{ 
    "query": { 
    "bool": { 
     "minimum_should_match": 1, 
     "should": [ 
     { 
      "term": { 
      "id_admin": 255 
      } 
     }, 
     { 
      "term": { 
      "id_user": 255 
      } 
     } 
     ], 
     "must": [ 
     { 
      "match": { 
      "striped": "sentence" 
      } 
     } 
     ] 
    } 
    } 
} 
+0

Im Durchschnitt in der gleichen Umgebung, meine Frage ist schneller als deine. – GSG

+1

Ich sage nur, dass die DSL-Syntax, die Sie verwenden [veraltet ist] (https://www.elastic.co/guide/en/elasticsearch/reference/2.0/breaking_20_query_dsl_changes.html#_literal_filtered_literal_query_and_literal_query_literal_filter_deprecated) und meine Abfrage ist das Äquivalent, das Sie mit ES 2.x verwenden sollten. Was die Leistung anbelangt, denke ich, dass Sie beide Abfragen ein paar tausend Mal getestet haben, um zu behaupten, dass Ihre schneller ist oder Sie nur einmalige Anrufe mit Locken oder Kopf machen oder die "genommene" Zeit abfragen und überprüfen (was nicht funktioniert) Meinst du nicht viel? – Val

+0

Haben Sie Glück dabei? – Val

Verwandte Themen