How to index some fields of an object

Hello,
I have to log a dynamic object, but I'm interested only to index some fields (not all), but when I configure this behaviour I can't search for those fields

Here an example of what I'm doing:

curl --request PUT 'http://localhost:9200/manuel-prova?pretty' \
--header 'Content-Type: application/json' \
--data-raw '{
  "mappings": {
    "log": {
      "properties": {
        "hello": {
          "type": "object",
          "enabled": false,
          "properties": {
            "my-api-key": {
              "type": "text"
            }
          }
        },
        "check": {
          "type": "boolean"
        }
      }
    }
  }
}'

Then I insert the data:

curl --request POST 'http://localhost:9200/manuel-prova/log?pretty' \
--header 'Content-Type: application/json' \
--data-raw '{
  "hello": {
  	"foo": "bar",
  	"my-api-key": "QWERTY"
  },
  "check": true
}'

Finally, I tried to query:

curl --request POST 'http://localhost:9200/manuel-prova/_search?pretty' \
--header 'Content-Type: application/json' \
--data-raw '{
  "query": {
    "bool": {
      "must": [
        { "exists": { "field": "hello.my-api-key" } }
      ]
    }
  }
}'

This query doesn't work.

If I change to { "exists": { "field": "check" } } for example, it works.

Do you have any suggestion?
Thank you very much

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.