2017-12-01 1 views
1

Ich kann eine schnelle tun URI search wieElasticsearch URI Suche mehrere Felder

GET twitter/tweet/_search?q=user:kimchy 

Kann ich mehrere Felder auf diese Weise zu suchen? Zum Beispiel: user:kimchy AND age:23?


Was I 1 (Fehler) versucht:

curl -XDELETE localhost:9200/myindex/ 
curl localhost:9200/myindex/mytype/1 -d '{"a":1,"b":9}' 
curl localhost:9200/myindex/mytype/2 -d '{"a":9,"b":9}' 
curl localhost:9200/myindex/mytype/3 -d '{"a":9,"b":1}' 

Sagen wir, ich will nur das Dokument {"a":9, "b":9}, ich

versucht
GET localhost:9200/myindex/_search?q=a:9&b:9 

aber ich bekomme Fehler

{ 
    error: { 
     root_cause: [{ 
      type: "illegal_argument_exception", 
      reason: "request [/myindex/_search] contains unrecognized parameter: [b:9]" 
     }], 
     type: "illegal_argument_exception", 
     reason: "request [/myindex/_search] contains unrecognized parameter: [b:9]" 
    }, 
    status: 400 
} 

Was ich versucht 2 (funktioniert!):

GET localhost:9200/myindex/_search?q=a:9 AND b:9 

Die Räume sind wichtig. Alternativ verwenden Sie .

+0

[Eine ähnliche Frage] (https://stackoverflow.com/questions/40729271/how-to-search-on-multiple-fields-in-uri-search), die eine kompliziertere Abfrage als meine erfordert. Ich teste nur auf Gleichheit. – sam

+0

Ja, Sie können. Hast du es versucht? – Val

Antwort

1

Ja, Sie können. Probieren Sie etwas wie folgt aus:

GET twitter/tweet/_search?q=user:kimchy%20AND%20age:23 

Beachten Sie, dass, wenn Sie URI diese entschlüsseln, es ist äquivalent zu:

GET twitter/tweet/_search?q=user:kimchy AND age:23 

Beachten Sie, dass, wenn Sie so diesen REST-Endpunkt verwenden, ich glaube, Sie wirklich Vorteil einnehmen von etwas wie der query_string_query. Sehen Sie sich diese Dokumente an, um eine Vorstellung vom Umfang der Sprache und den Funktionen der Abfragezeichenfolge zu erhalten, die Ihnen zur Verfügung stehen.

+0

Es ist lustig, dass, wenn ich in meiner Frage 'Zum Beispiel, Benutzer: kimchy AND age: 23' in meiner Frage sagte, habe ich nicht buchstäblich über diese Syntax gesprochen, die anscheinend existiert und tatsächlich funktioniert! Ich danke dir sehr. – sam

0

Ja, Sie können. Probieren Sie etwas wie folgt aus:

GET twitter/tweet/_search?q=user:kimchy&title:jones&pretty=true 

pretty=true für ziemlich Antwortausgabe.

+0

Ich schätze die Hilfe Vadim. Ich habe diesen Ansatz versucht und aktualisiert, was ich in meiner Frage versucht habe, aber leider einen Fehler bekommen. – sam

+0

Können Sie Fehlermeldung teilen? –

+0

Ja. Ich habe "was ich versucht habe 1" in meine Frage aufgenommen. Vielen Dank. – sam

Verwandte Themen