ElasticSearch: при использовании сворачивания полей можно ли вернуть все документы, у которых нет значения для ключа сворачивания? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь свернуть документы с указанным ключом, упорядоченные по дате. Ключ не всегда заполняется. В случаях, когда ключ равен нулю, elasti c, кажется, сворачивает все документы, в которых этот ключ не заполнен, и возвращает самый новый. Я хотел бы свернуть только документы, в которых поле было заполнено, и вернуть документ, если ключ отсутствует. Возможно ли это?

Вот запрос сворачивания, который я сейчас использую:

"collapse": {
"field": "COLLAPSE_KEY",
"inner_hits": {
  "name": "collapse_inner_hit",
  "ignore_unmapped": false,
  "from": 0,
  "size": 1,
  "version": false,
  "seq_no_primary_term": false,
  "explain": false,
  "track_scores": false,
  "sort": [
    {
      "DATE_FIELD": {
        "order": "desc"
      }
    }
  ]
}

и в java:

 CollapseBuilder collapseBuilder = new CollapseBuilder(COLLAPSE_KEY);

 InnerHitBuilder collapseHitBuilder = new InnerHitBuilder("collapse_inner_hit");
 collapseHitBuilder.setSize(1);
 collapseHitBuilder.addSort(new FieldSortBuilder(DATE_FIELD).order(SortOrder.DESC));
 collapseBuilder.setInnerHits(collapseHitBuilder);

 searchSourceBuilder.collapse(collapseBuilder);

1 Ответ

0 голосов
/ 11 июля 2020

При отсутствии значения elasti c свернет их под 'null'. Если эти значения не требуются в ответе, рассмотрите возможность добавления в запрос предложения существует .

...