2017-04-13 1 views
0

Es gab einige Probleme, bei denen unsere Abfragen keine Artikel mit bestimmten Versions-IDs mit ElasticSearch 2.3 zurückgaben. Nach einigen Untersuchungen sieht es so aus, als ob sich unsere aktuelle elasticsearch-Abfrage nicht verhält, wenn in der Versionskennung ein '#' steht.Einen Hash in einer übergeordneten ID für die elastische Suche umgehen?

Die Abfrage ich auszuführen versuche ist so etwas wie die folgenden:

{ 
    "query": { 
     "constant_score": { 
      "filter": { 
       "terms": { 
        "_parent": [ 
         "faro-deployments-webservice-infrastructure|#abc123", 
         "faro-deployments-webservice-infrastructure|xyz321" 
        ] 
       } 
      } 
     } 
    } 
} 

Dies funktioniert gut, aber schließt alle Ergebnisse, bei denen die Eltern-ID ein Zeichen ‚#‘ in sich hat. Ich kann es nicht wieder finden, aber ich erinnere mich, irgendwo gelesen zu haben, dass # in diesem Zusammenhang eine bestimmte Bedeutung hat. Ich habe eine Vielzahl von Möglichkeiten ausprobiert, um dem # zu entkommen, gibt es eine Möglichkeit, Versionen mit einem # -Zeichen darin zu unterstützen oder eine ähnliche Abfrage mit ähnlichen Ergebnissen durchzuführen?

Antwort

0

Das folgende scheint für mich zu arbeiten. Ich änderte die Abfrage, um etwas ähnliches zu tun, und benutzte das Feld "_parent" nicht.

{ 
    "query": { 
     "has_parent": { 
      "type": "deck", 
      "query": { 
       "constant_score": { 
        "filter": { 
         "terms": { 
          "_id": [ 
           "faro-deployments-webservice-infrastructure|#abc123", 
           "faro-deployments-webservice-infrastructure|xyz321" 
          ] 
         } 
        } 
       } 
      } 
     } 
    } 
}