我正在尝试设置Elasticsearch,创建索引,添加了一些记录,但是无法使其以词形式返回结果(例如:当我搜索“dream”时,带有子字符串“dreams”的记录)。
我的记录如下所示(索引“myindex / movies”):
{
"id": 1,
"title": "What Dreams May Come",
... other fields
}
我尝试使用的配置:
{
"settings": {
"analysis": {
"analyzer": {
"stem": {
"tokenizer": "standard",
"filter": [
"standard",
"lowercase",
"stop",
"porter_stem"
]
}
}
}
},
"mappings": {
"movies": {
"dynamic": true,
"properties": {
"title": {
"type": "string",
"analyzer": "stem"
}
}
}
}
}
查询如下所示:
{
"query": {
"query_string": {
"query": "Dream"
}
}
}
我可以使用“梦想”一词来获得结果,但不能使用“梦想”一词。
我做错什么了吗?
我应该首先以某种方式安装porter_stem吗?
最佳答案
您没有做错任何事情,只是您在错误的字段中进行搜索。
query_string,默认情况下对_all进行搜索。 _all拥有自己的分析器。
因此,您需要将同一分析器应用于_all或将查询指向标题字段,如下所示-
{
"query": {
"query_string": {
"query": "dream",
"default_field": "title"
}
}
}
关于elasticsearch - Elasticsearch:无法使用字形进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071837/