заставить elasticsearch возвращать объекты, содержащие все поля

#elasticsearch

#elasticsearch

Вопрос:

Я запускаю запрос elasticsearch для возврата объектов с определенными полями. Использование sourcefilter работает как оператор OR, но я бы хотел иметь только все, у которых есть поля, а не некоторые поля. Как мне это сделать?

 {
"_source": {
        "includes": ['user.screen_name','entities.hashtags.text']            
        "excludes": ['retweeted', ]
},
"query":{
    "match_all":{}
  

}

Что я должен включить, чтобы этот запрос возвращал там, где есть user.screen_name И сущности.hashtags.text ?

Ответ №1:

Для этой цели следует использовать запрос exists .

Приведенный ниже запрос должен работать в вашем случае:

 GET sample/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "exists": {
            "field": "user.screen_name"
          }
        }, 
        {
          "exists": {
            "field": "entities.hashtags.text"
          }  
        }
      ]
    }
  }
}