Elasticsearch在短语中找到缺少的单词

时间:2016-06-05 20:21:33

标签: elasticsearch

如何使用Elasticsearch查找短语中缺少的单词?例如,我想查找包含此模式make * great again的所有文档,我尝试使用通配符查询但它没有返回任何结果:

   {
  "fields": [
    "file_name",
    "mime_type",
    "id",
    "sha1",
    "added_at",
    "content.title",
    "content.keywords",
    "content.author"
  ],
  "highlight": {
    "encoder": "html",
    "fields": {
      "content.content": {
        "number_of_fragments": 5
      }
    },
    "order": "score",
    "tags_schema": "styled"
  },
  "query": {
    "wildcard": {
      "content.content": "make * great again"
    }
  }
}

如果我输入一个单词并使用match_phrase查询我会得到结果,所以我知道我有与该模式匹配的数据。

我应该使用哪种类型的查询?或者我是否需要在现场添加某种类型的自定义分析仪?

1 个答案:

答案 0 :(得分:1)

通配符查询按术语进行操作,因此如果您在分析的字段上使用它,它实际上会尝试分别匹配该字段中的每个术语。在您的情况下,您可以创建一个not_analyzed子字段(例如content.content.raw)并对其运行通配符查询。或者只是将实际字段映射到不进行分析,如果您不需要以其他方式查询它。