elasticsearchelasticsearch-mapping

Empty fields aren't shown directly in Elasticsearch?


I added an extra field called "title" with the Put Mapping API and then tried a normal search on my index with GET index_name/type/_search but the records don't show any field with "title" in it. Is it because the field has no content in it? If so how do I get fields with no content?

Thank you.


Solution

  • if you have _source enabled, elasticsearch will return the field value(whether empty or not), which you sent to it. as shown in below example.

    {
      "title" : "" // see empty value
    }
    

    And GET API on this doc-id returns below response

    {
        "_index": "newso",
        "_type": "_doc",
        "_id": "1",
        "_version": 2,
        "_seq_no": 1,
        "_primary_term": 1,
        "found": true,
        "_source": {
            "title": "" // same value is returned in response.
        }
    }
    

    EDIT:- Based on @Val comment, If you are looking to find this newly added title field in old documents, where you didn't index this field, you will not be able to find it, As elasticsearch is schema-less, and doesn't enforce that you have to mandatory index a field. Also you can add/remove fields without updating mapping as its schemaless.

    For this matter, even if you index a new document, after adding this title field in mapping, and don't include title field, then for that document again title field will not be returned.