Подтвердить что ты не робот

Лучший способ проверить, существует ли поле в документе Elasticsearch

Может быть, это очень глупый вопрос. Каков наилучший способ проверить, существует ли поле документа в elasticsearch? Я не могу найти что-либо в документации.

Например, если этот документ не имеет поля/ключа "цена", я не хочу возвращать результат.

{     "обновлено": "2015/09/17 11:27:27",      "name": "Eye Shadow",      "формат": "1,5 г /0,05 унции",    }

Что я могу сделать?

Спасибо

4b9b3361

Ответ 1

Вы можете использовать exists фильтр в сочетании с bool/must фильтром следующим образом:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}

Вы также можете использовать фильтр missing в сочетании с фильтром bool/must_not:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "missing": {
                "field": "price"
              }
            }
          ]
        }
      }
    }
  }
}

Ответ 2

Вы можете использовать существующий фильтр:

{
  "query": {
    "filtered": {
      "filter": {
        "exists": {
          "field": "status"
        }
      },
      "query": {
        "match_all": {}
      }
    }
  }
}

С уважением, Ален

Ответ 3

Фильтр exists был заменен на exists запрос из ES 2.1, хотя его работа одинаков. Кроме того, отсутствующий фильтр удаляется, а отсутствующий запрос устарел.

Чтобы получить все документы, которые имеют определенное поле,

"bool": {
    "must": {
        "exists": {
            "field": "my_field"
        }
    }
}

и чтобы получить все документы, которые НЕ имеют определенное поле, используйте его с must_not, как этот

"bool": {
    "must_not": {
        "exists": {
            "field": "my_field"
        }
    }
}

Эластичные документы: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-missing-query.html