2017-04-06 1 views
0

Ich sende die folgende elastische Suchabfrage und es verhält sich sehr gut, wenn über URI-Suche gesendet. Aber mit Post mit Body Call - es funktioniert nicht wie erwartet. Bitte geben Sie an, wie Sie die Anfrage korrigieren können.ElasticSearch: Frage Beitrag Körper funktioniert nicht aber URI Suche funktioniert

Dies funktioniert:

GET ANRUF

<someUrl>/elasticsearch/index/_search?q=host:host-0 

RESPONSE (beschränkt auf Host-0)

{ 
    "took": 4, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 128040, 
     "max_score": 2.0973763, 
     "hits": [{ 
       "_index": "123" 
       "_type": "log_message", 
       "_id": "123", 
       "_score": 111, 
       "_source": { 
        "host": "host-0", 
        "pid": 333, 
        "timestamp": "2017-04-06T04:29:44.724Z", 
        "priority": 7, 
        "namespace": "syslog", 
        "msg": "aaaaa" 
       } 
      }, 

      "_index": "345" 
      "_type": "log_message", 
      "_id": "345", 
      "_score": 111, 
      "_source": { 
       "host": "host-0", 
       "pid": 333, 
       "timestamp": "2017-04-06T04:29:44.724Z", 
       "priority": 7, 
       "namespace": "syslog", 
       "msg": "aaaaa" 
      } 
     }, 
     ..... 
} 

Das funktioniert nicht:

POST CALL-

<someUrl>/elasticsearch/index/_search 

BODY für POST Call:

{ 
    "query" : { 
     "term" : { "host": "host-0" } 
    } 
} 

RESPONSE (nicht begrenzt auf-0 Host)

auf diesen Index
{ 
    "took": 4, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 128040, 
     "max_score": 2.0973763, 
     "hits": [{ 
       "_index": "123" 
       "_type": "log_message", 
       "_id": "123", 
       "_score": 111, 
       "_source": { 
        "host": "host-1", 
        "pid": 333, 
        "timestamp": "2017-04-06T04:29:44.724Z", 
        "priority": 7, 
        "namespace": "syslog", 
        "msg": "aaaaa" 
       } 
      }, 

      "_index": "345" 
      "_type": "log_message", 
      "_id": "345", 
      "_score": 111, 
      "_source": { 
       "host": "host-0", 
       "pid": 333, 
       "priority": 7, 
       "namespace": "syslog", 
       "msg": "aaaaa" 
      } 
     }, 
      "_index": "546" 
      "_type": "log_message", 
      "_id": "546", 
      "_score": 111, 
      "_source": { 
       "host": "host-0", 
       "pid": 222,     
       "priority": 7, 
       "namespace": "syslog", 
       "msg": "aaaaa" 
      } 
     }, 
     ..... 
} 

The Get GET zurück/Elasticsearch/

 "host": { 
     "type": "string", 
     "index": "not_analyzed" 
     }, 
+0

Wie senden Sie Ihre Anfragen? Mit welchem ​​Kunden? – Val

+0

teilen Sie bitte auch Ihre Schema-Mappings und Version – user3775217

+0

Ich bin neu bei Elasticsearch - wie kann ich die Version und Mapping abrufen? – BabyGroot

Antwort

1

In Ihrem GET-Aufruf wird das Token analysiert. Wenn Sie den folgenden GET-Aufruf (durch das Umgeben von mit doppelten Anführungszeichen) versuchen, erhalten Sie im Wesentlichen die gleiche Abfrage wie Ihr POST-Aufruf, und Sie werden keine Ergebnisse erhalten.

<someUrl>/elasticsearch/index/_search?q=host:"host-0" 

Wenn Sie Ergebnisse wollen, müssen Sie anstelle eines term man eine match Abfrage verwenden. Das entspricht ...?q=host:host-0 in Ihrem GET-Aufruf.

{ 
    "query" : { 
     "match" : { "host": "host-0" } 
    } 
} 

Am Ende denke ich, dass Ihr host Feld den text Typen hat, während er die keyword Art haben sollte.

+0

OP sagt, dass er Ergebnisse sowohl für GET als auch für POST-Aufrufe bekommen hat (was in diesem Fall seltsam für mich aussieht). Wenn das "Host" -Feld analysiert wird, sollten wir keine Ergebnisse für einen POST-Aufruf erhalten, es sei denn, er hat einen anderen Analysator verwendet! – avr

+0

Dies ist, was ich auf immer den Index "host" erhalten: { "type": "string", "index": "not_analyzed" } scheint – BabyGroot

+0

Dieses eher ein Postbote Tool Problem - Ergebnisse von der Kommandozeile Locken arbeiten richtig – BabyGroot