2016-06-06 2 views
0

Я пытаюсь получить первый документ с определенным свойством. например, у меня есть 50 документов с свойством «a»: «1», с разными датами. также 100 документов с «a»: «2» есть способ запросить первый документ каждого значения «a» по дате?Найти первый документ для каждого значения свойства

ответ

0

Не совсем то, что вы хотели, но вы можете запустить следующее, которое покажет вам результаты, которые соответствуют: 1 или a: 2, и будут заказывать результаты по вашему желанию.

{ 
    "sort": { 
    "your_timestamp_field": { 
     "order": "desc" 
    } 
    }, 
    "query": { 
    "filtered": { 
     "filter": { 
     "or": [ 
      { 
      "term": { 
       "a": 1 
      } 
      }, 
      { 
      "term": { 
       "a": 2 
      } 
      } 
     ] 
     } 
    } 
    } 
} 

Вы также можете запускать несколько запросов с использованием msearch. Например

Место ниже в файле с именем запросов

{"index": "your-index"} 
{"size":1,"sort":{"@timestamp":{"order":"desc"}},"query":{"filtered":{"filter":{"term":{"a":"1"}}}}} 
{"index": "your-index"} 
{"size":1,"sort":{"@timestamp":{"order":"desc"}},"query":{"filtered":{"filter":{"term":{"a":"2"}}}}} 

Затем запустите

curl -XGET http://localhost:9200/your-index/_msearch --data-binary @requests; echo

+0

Краткое примечание: На второй строке 'requests' вы пропустили закрывающий brace – Val

+0

Исправлено, спасибо @Val –

+0

спасибо, что я раньше не знал msearch. проблема в том, что у меня нет списка значений (guid type), если я не приведу их перед этим запросом. Я надеялся, что у ES есть что-то встроенное –

Смежные вопросы