elasticsearch - Elasticsearch:无法使用字形进行搜索

标签 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"
        }
    }
}

我可以使用“梦想”一词来获得结果,但不能使用“梦想”一词。

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

最佳答案

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

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

关于elasticsearch - Elasticsearch:无法使用字形进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071837/

相关文章:

java - 即时在 TreeSet 中搜索记录

c# GetDirectories 返回意外目录(已给出具体示例)

nosql - 如何按日期范围查询Cassandra

c# - RavenDB 内部集合分页

elasticsearch - 打开的文件太多Elasticsearch和App Search

java - ElasticSearch - 定义用于排序的自定义字母顺序

algorithm - 棋盘游戏中的蒙特卡洛树搜索 - 如何实现对手的 Action

json - PostgreSQL - NoSQL查询思路选择JSON的一个节点

elasticsearch - Logstash日期过滤器

php - Composer 安装错误 "Could not parse URElasticsearch\Common\Exceptions\InvalidArgumentException : Could not parse URII"