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"
}
}
本文介绍了Elasticsearch中multi-fields的概念,用于在同一字段上实现不同的索引方式,如将字符串字段映射为text字段进行全文搜索,以及keyword字段用于排序和聚合。通过fields参数可以定义多个字段。示例中展示了如何设置一个field为text和keyword类型,并进行了数据插入、查询及排序操作。
657

被折叠的 条评论
为什么被折叠?



