我正在尝试在我的弹性搜索实例中的_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"
}
}
}
}
但是我收到了一个错误:
“reason”:“字段[_id]在[type2]中定义了两次”
可能是因为_id字段是在index2
创建期间与分析器一起创建的。
所以我的问题是如何在_id字段上使用部分搜索? 还有其他办法吗?
提前致谢!