«существует» в запросеasticsearch, не работающем на объекте - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь выполнить поиск с использованием Kibana Dev, но он не работает для встроенных объектов, и я не знаю почему.

Вот выдержка из сопоставления:

{
  "myIndex": {
    "mappings": {
      "dynamic": "false",
      "properties": {
        "id": {
          "type": "integer"
        },
        "created": {
          "properties": {
            "firstName": {
              "type": "keyword"
            },
            "lastName": {
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}

Следующий существующий запрос всегда ничего не возвращает, когда я знаю, что должен:

{
  "query": {
    "exists": {
      "field": "created.firstName"
    }
  }
}

Он не является вложенным, поэтому проблема не в этом. Если я заменю «id» на «create.firstName», он будет работать правильно.

Использование ES 7.4.0.

1 Ответ

0 голосов
/ 10 апреля 2020

Попробуйте отменить поиск

GET /_search
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "created.firstName"
        }
      }
    }
  }
}

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


Шаги репликации:

PUT ex
{
  "mappings": {
    "dynamic": "false",
    "properties": {
      "id": {
        "type": "integer"
      },
      "created": {
        "properties": {
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

POST ex/_doc
{
  "id": 1,
  "created": {
    "firstName": "name"
  }
}

GET ex/_search
{
  "query": {
    "exists": {
      "field": "created.firstName"
    }
  }
}

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