Elasticsearch 多字段映射:使用多个名称访问同一字段
Elasticsearch 多字段映射:使用多个名称访问同一字段
使用多字段映射可以让一个字段拥有多个名称,方便不同类型的查询。例如,您可以为一个name字段创建keyword类型和pinyin类型的子字段,分别用于精确匹配和拼音模糊匹配。
设置多字段映射
可以通过在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/oWtm 著作权归作者所有。请勿转载和采集!