前言
- Elasticsearch 8.10 引入了同義詞 API,可以取代以前的同義詞文件
- 注意 synonyms_set 只能用於
search_analyzer,不能用於 index analyzer
案例
PUT _synonyms/test_syn_set
{
"synonyms_set": [
{
"id": "pc",
"synonyms": "pc => personal computer"
},
{
"id": "computer",
"synonyms": "computer,laptop"
},
{
"id": "事兒",
"synonyms": "事兒,事"
}
]
}
GET _synonyms/test_syn_set
PUT my_index
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"synonym_analyzer": {
"tokenizer": "ik_smart",
"filter": [
"test_syn"
]
}
},
"filter": {
"test_syn": {
"type": "synonym_graph",
"synonyms_set": "test_syn_set",
"updateable": true
}
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
GET my_index/_analyze
{
"text": [
"明朝那些事兒"
],
"analyzer": "synonym_analyzer"
}
分詞結果: 明朝 那些 事兒 事
PUT _synonyms/test_syn_set/事兒
{
"synonyms": "事兒,事,事情"
}
- 注意無論是更新同義詞集合整體還是更新單個同義詞,ES 會自動
_reload_search_analyzers,無需手動操作
- 似乎 ES 8 不再用同義詞隱式傳遞的問題
# 隱式傳遞即
A,B
B,C
# 通過 B,將 A C 視為同義詞
相關閲讀
- Elasticsearch 官方博客:Update your synonyms in Elasticsearch: Introducing the synonyms API
- 銘毅天下:Elasticsearch 8.10 同義詞管理新篇章:引入同義詞 API
本文出自 qbit snap