我有以下字段(“名称”)的Map:
"name": {
"analyzer": "ngram_analyzer",
"search_analyzer": "keyword_analyzer",
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
它可以很好地工作,并允许作为文本和关键字进行搜索。根据es文件:
https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html 字符串字段可以Map为全文搜索的文本字段,也可以Map为排序或聚合的关键字字段。
但我正在尝试扩展这个Map以支持通配符搜索。
我试图修改Map(例如下面这样),但无法使其工作。
"name": {
"analyzer": "ngram_analyzer",
"search_analyzer": "keyword_analyzer",
"type": "text",
"fields": [{
"raw": {
"type": "wildcard"
}
}, {
"type": "keyword"
}]
}
也试过了,
"name": {
"analyzer": "ngram_analyzer",
"search_analyzer": "keyword_analyzer",
"type": "text",
"fields": [{
"raw": {
"type": "wildcard"
}
}, {"raw": {
"type": "keyword"
}}]
}
Map应该是什么样的,以允许将名称作为文本、关键字和通配符进行搜索。
1条答案
按热度按时间wgmfuz8q1#
可以使用多个字段来索引
name
以多种方式输入字段。修改后的索引Map将现在你可以用
name
对于基于文本的搜索,name.raw
对于通配符搜索,name.keyword
用于关键字搜索