我有一个自定义分析器忽略常见的词,如“the”,“a”,“an”,“on”:
{
"analysis": {
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": [
"the",
"a",
"an",
"on"
]
}
},
"analyzer": {
"customAnalyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stopwords"
]
}
}
}
}
这是一个名为“thisField”的字段,它使用存储短文本的customAnalyzer:
"thisField": {
"type": "text",
"norms": false,
"analyzer": "customAnalyzer"
}
一些示例文档:
[
{
id:1,
thisField:"the cat is on the table"
},
{
id:2,
thisField:"expensive table"
}
]
我的过滤查询需要在thisField
中逐字搜索“在桌面上”。我无法使用以下查询显示任何结果。我发现这是因为查询中包含“on”。 elasticsearch中是否有任何设置会使筛选后的查询自动忽略查询中的任何停用词?
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"term": {
"thisField": "on"
}
},
{
"term": {
"thisField": "table"
}
}
]
}
}
}