我正在尝试对_id
我的弹性搜索实例中的字段执行部分单词匹配。
在搜索了官方文档后,我发现最好的方法是创建一个 n-gram 分析器,所以Sense
我这样做了:
PUT /index2
{"settings": {
"number_of_shards": 1,
"analysis": {
"filter": {
"partial_filter": {
"type": "ngram",
"min_gram": 2,
"max_gram": 20
}
},
"analyzer": {
"partial": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"partial_filter"
]
}
}
}
}}
我尝试使用以下方法测试分析仪:
POST /index2/_analyze
{
"analyzer": "partial",
"text": "brown fox"
}
它按预期工作,产生了适当的组合。下一步应该是将分析器应用于相关字段,所以我尝试这样做:
PUT /index2/_mapping/type2
{
"type2": {
"properties": {
"_id": {
"type": "string",
"analyzer": "partial"
}
}
}
}
但我收到一个错误:
“原因”:“字段 [_id] 在 [type2] 中定义了两次”
可能是因为 _id 字段是在创建过程中index2
与分析器一起创建的。
所以我的问题是如何在 _id 字段上使用部分搜索?有没有其他方法可以做到这一点?
提前致谢!