Elasticsearch学习笔记:multi-fields

multi-fields

It is often useful to index the same field in different ways for different purposes. This is the purpose of multi-fields. For instance, a string field could be mapped as a text field for full-text search, and as a keyword field for sorting or aggregations.
You can define as many fields with the fields parameter as you want.
Please note that this option is only available for core data types and not for the objects.

对一个field设置多种索引方式。比如,一个字符串设置为”text”类型用于进行全文检索,同时又给它设置”keyword”类型用于排序或聚合。

#对需要设置的字段,在'type'属性后增加"fields": 
#其中的"raw"为自定义的名称,想象它是city的一个分身。
PUT /my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "city": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}

插入数据

PUT /my_index/my_type/1
{
  "city": "New York"
}
PUT /my_index/my_type/2
{
  "city": "York"
}

查询并排序
查询字段为city,使用它的text类型.排序使用了city.raw

GET /my_index/_search
{
  "query": {
    "match": {
      "city": "York"
    }
  },
  "sort": {
    "city.raw": "asc"
  }
}

你可能感兴趣的:(Elastic)