2017-01-31 6 views
0

Я новичок в поиске elasticsearch, я выполняю все запросы, и он извлекает данные таким образом, но только мне нужны данные, полученные в _source, как я могу это сделать? любая идея?Извлечь данные без поля _source:

{ 
    "took": 4, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 107271, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "sku_index", 
     "_type": "po", 
     "_id": "0", 
     "_score": 1, 
     "_source": { 
      "loc": "ZZZ", 
      "part": "PPP", 
      "order_qty": "16", 
     } 
     }, 
     { 
     "_index": "sku_index", 
     "_type": "po", 
     "_id": "14", 
     "_score": 1, 
     "_source": { 
      "loc": "ZZZ", 
      "part": "XXX", 
      "order_qty": "7", 
     }, 
{ 
      "_index": "sku_index", 
      "_type": "po", 
      "_id": "14", 
      "_score": 1, 
      "_source": { 
       "loc": "ZZZ", 
       "part": "ZZZ", 
       "order_qty": "7", 
      } 
      } 
     ....... 

Я wnat что-то вроде этого:

 [{ 
      "loc": "ZZZ", 
      "part": "PPP", 
      "order_qty": "16", 
     }, 
     { 
      "loc": "ZZZ", 
      "part": "XXX", 
      "order_qty": "16", 
     }, 
     { 
      "loc": "ZZZ", 
      "part": "ZZZ", 
      "order_qty": "7", 
     } 
     ] 

ответ

1

Одним из возможных способов это делать source filtering, добавив к запросу

"_source": { 
     "includes": [ "loc", "part", "order_qty" ], 
     "excludes": [ "not_needed_field" ] 
}, 

Другой способ, если ваши поля stored (которые не всегда бывает и часто не рекомендуется, из-за дополнительных требований к пространству.

По умолчанию значения полей индексируются, чтобы сделать их доступными для поиска, но они не сохраняются. Это означает, что поле может быть запрошено, но исходное значение поля невозможно получить.

Так что вам нужно добавить к вашему запросу:

"stored_fields" : ["loc", "part", "order_qty"] 
+0

Я попытался с '{ "запрос": { "_source": { "включает в себя": " obj1 *"[ , "obj2 *." ], "исключает": [ "* .description" ] }, "match_all": {}} } ', но не работает –

+0

И 'GET/sku_index/po/_search { " stored_fields ": [" loc "," part "] }' not works no –

+0

Вы заменили obj1. с желаемыми именами полей? – Mysterion