2015-07-22 8 views
5

Wenn ausführen ich eine Abfrage über einen Index wie folgt aus:Elastic Search - ausschließen Index und Typ von Json Antwort

{ 
    "_source":["bar"] , "size":100, 
    "query": { 
     "match_all": {} 
    }, 
    "filter": { 
     "type" : { 
      "value" : "foo" 
     } 
    } 
} 

die Antwort enthält Index, Typ usw. Aber ich weiß schon, den Index und die Art, weil ich hat es spezifiziert. Diese Information bläht nur die Größe der JSON-Daten auf. Gibt es eine Möglichkeit, diese von der Reaktion auszuschließen?

Dies ist, was ich bekommen:

{ 
"took": 31, 
"timed_out": false, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
"hits": { 
    "total": 364024, 
    "max_score": 1, 
    "hits": [ 
      { 
     "_index": "foo_bar", 
     "_type": "foo", 
     "_id": "asdjj123123", 
     "_score": 1, 
     "_source": { 
      "bar": "blablablabla" 
    } 
    } 
,... 

Was ich will, ist so etwas wie dies, so dass eine Reaktion ohne Typ, score, Index:

{ 
"took": 31, 
"timed_out": false, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
"hits": { 
    "total": 364024, 
    "max_score": 1, 
    "hits": [ 
      { 
     "_id": "asdjj123123", 
     "_source": { 
      "bar": "blablablabla" 
    } 
    } 
,... 

Antwort

7

Ja, ab der ES 1.6 Sie können response filtering verwenden und den Parameter filter_path in der Abfrage nur verwenden, was Sie in der Antwort benötigen:

curl -XGET 'localhost:9200/foo_bar/foo/_search?pretty&filter_path=hits.total,hits.max_score,hits.hits._id,hits.hits._source' 
+1

Wie kann ich filter_path in einen Post-Body statt als get in die URL aufnehmen? – benbo

+2

Sie müssen nicht, Sie können eine Textstelle für Ihre Abfrage angeben und immer noch einen 'filter_path' in der URL angeben. – Val

Verwandte Themen