Home > database >  How does multi field mapping work in Elastic Search
How does multi field mapping work in Elastic Search

Time:12-23

I want to support both text search (match query) as well as exact match (term query) on a single field in my elasticsearch index.

Following is the mapping that I have created:

PUT multi_mapping_test/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword"
        }
      }
    }
  }
}

However, the term query is not behaving as I am expecting it to (may be understanding of it is wrong).

For example, here are couple of sample documents indexed:

POST multi_mapping_test/_doc
{
  "name": "abc llc"
}

POST multi_mapping_test/_doc
{
  "name": "def llc"
}

Following term query yields no results:

GET multi_mapping_test/_search
{
  "query": {
    "term": {
      "name": {
        "value": "abc llc"
      }
    }
  }
}

Am I doing anything wrong or is my understanding of exact matches with term query incorrect?

P.S. The term query works fine when I put mapping for only keyword type.

CodePudding user response:

Term query: Returns documents that contain an exact term in a provided field. When you're searching for exact match you should use keyword field types. Like the following:

GET multi_mapping_test/_search
{
  "query": {
    "term": {
      "name.keyword": {
        "value": "abc llc"
      }
    }
  }
}

In addition, You can use bool query for both text search (match query) and exact match (term query) in your elasticsearch index.

GET multi_mapping_test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "abc llc"
          }
        },
        {
          "term": {
            "name.keyword": {
              "value": "abc llc"
            }
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

Note: You can also use the enter image description here

"abc llc" _score will be higher than "def llc" because it matches both match and term queries.

  • Related