Ricardo Peres
Ricardo Peres

Reputation: 14525

Elasticsearch: Cannot Get Results From Keyword Field

I have a field that is mapped as text and which includes another field mapped as keyword (fields keyword). I insert data and ensure it can retrieved using any query. However, when I query the additional field (mapped as keyword), I cannot find any data at all. Here is the example (simplified):

POST people/_mapping/_doc
{
  "properties": {
    "name": {
      "type": "text"
    },
    "bio": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword"
        }
      }
    }
  }
}

And here is a query:

POST people/_search
{
  "query": {
    "match": {
      "bio.keyword": "Portugal"
    }
  }
}

Same happens regardless of the casing (Portugal vs portugal). What is the reason for this behavior?

Upvotes: 1

Views: 401

Answers (2)

Xin
Xin

Reputation: 36490

In elasticseach, if you have a text type field say description.

One value of description is: He likes dog but hate cat.

The revert index for this field is: He/like/dog/but/hate/cat

And there is another 'keyword' field which is description.keyword, which is exactly He likes dog but hate cat.

The keyword field requires 100% match.

Upvotes: 1

Ricardo Peres
Ricardo Peres

Reputation: 14525

Got it:

Keyword fields are only searchable by their exact value

References: https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html

Upvotes: 0

Related Questions