Как запросить точное и только одно свойство в ElasticSearch? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть документ со следующим отображением:

"employees": {
   "type": "dynamic",
   "properties": { 
      "prop1":  { ""type": "text" },
      "prop2": { "type": "text"  }
   }
}

Я хотел бы запросить все документы, которые имеют prop1, и все, я не хочу получать документы, имеющие оба prop1 и prop2. Если я использую запрос терминов для prop1, я также получаю документы, которые могут иметь prop2.

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Это должно работать:

GET employees/_search
{
    "query": {
        "bool": {
            "must": [{
                "exists": {
                    "field": "prop1"
                }
            }],
            "must_not": [{
                "exists": {
                    "field": "prop2"
                }
            }]
        }
    }
}

Это говорит о том, что prop1 должен существовать, а prop2 не должен существовать, поэтому вы не получите документы, содержащие оба prop1 и prop2.

0 голосов
/ 25 мая 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...