我有一个带有一堆字段的Elasticsearch索引,其中一些我想与默认的禁用词列表一起使用。另一方面,我有一个用户名字段,该字段应返回名为 ,是等用户的结果。
当然,当我运行以下查询时:
{
"query": {
"constant_score": {
"filter": {
"terms": {
"username": [
"be"
]
}
}
}
}
}
什么都没有。我已经看到了各种解决方案,用于更改标准分析器以删除停用词,但我很难找到我将如何仅针对这一个字段进行操作。谢谢你的任何指示。
答案 0 :(得分:2)
您可以执行以下操作:添加不应使用停用词的自定义分析器,然后仅针对您希望识别停用词的字段(例如username
字段)明确指定此分析器。
PUT /stopwords
{
"settings": {
"analysis": {
"analyzer": {
"my_english": {
"type": "english",
"stopwords": "_none_"
}
}
}
},
"mappings": {
"text": {
"properties": {
"title": {
"type": "string"
},
"content": {
"type": "string"
},
"username": {
"type": "string",
"analyzer": "my_english"
}
}
}
}
}