Elasticsearch:无法使用wordforms进行搜索

时间:2015-10-12 01:07:51

标签: elasticsearch search nosql

我正在尝试设置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"
        }
    }
}

我可以使用单词“dreams”获得结果,但不能使用“dream”。

我做错了吗? 我应该先以某种方式安装porter_stem吗?

1 个答案:

答案 0 :(得分:2)

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

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