Elasticsearch:无法使用字形搜索

Elasticsearch: Unable to search with wordforms

我正在尝试设置 Elasticsearch、创建索引、添加一些记录,但无法使它成为 return 词形式的结果(例如:当我搜索 [= 时带有子字符串 "dreams" 的记录26=]).

我的记录是这样的(索引 "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"
        }
    }
}

我可以使用单词 "dreams" 返回结果,但不能使用 "dream"。

我做错了什么吗? 我应该先安装 porter_stem 吗?

你没有做错任何事,只是你搜索的领域不对。 query_string ,默认在 _all 上搜索。 _all 有自己的分析器。 因此,您需要将相同的分析器应用于 _all 或将查询指向标题字段,如下所示 -

{
  "query": {
    "query_string": {
      "query": "dream",
      "default_field": "title"
    }
  }
}