es 一个字段使用多个名字 设置mapping
可以通过在mapping中设置"fields"属性来实现一个字段使用多个名字。具体操作步骤如下:
- 创建一个索引并设置mapping
PUT my_index
{
"mappings": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
},
"pinyin": {
"type": "text",
"analyzer": "pinyin_analyzer"
}
}
}
}
}
}
-
在mapping中设置fields属性,其中"keyword"表示使用keyword类型,"pinyin"表示使用pinyin_analyzer分词器
-
在索引中添加数据
PUT my_index/_doc/1
{
"name": "张三",
"name.keyword": "Zhang San",
"name.pinyin": "zhāng sān"
}
- 查询数据
使用match查询:
GET my_index/_search
{
"query": {
"match": {
"name": "张三"
}
}
}
使用term查询:
GET my_index/_search
{
"query": {
"term": {
"name.keyword": "Zhang San"
}
}
}
使用match查询拼音:
GET my_index/_search
{
"query": {
"match": {
"name.pinyin": "zhangsan"
}
}
}
注意:在查询时,需要根据实际情况选择使用哪个字段。如果需要精确匹配,使用"keyword"类型字段;如果需要模糊匹配,使用"text"类型字段
原文地址: https://www.cveoy.top/t/topic/htFL 著作权归作者所有。请勿转载和采集!