elasticsearch - 混淆了如何搜索字段包含字符串的项目

时间:2014-07-03 02:43:48

标签: elasticsearch

此查询仅返回一项" steve_jobs"。

{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "name":"steve_jobs"
        }
      }
    }
  }
}

所以,现在我想让所有名字前缀为steve_的人。所以我试试这个:

{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "name": "steve_"
        }
      }
    }
  }
}

这没有任何回报。为什么呢?

我对何时使用术语查询/术语过滤器/术语过滤器/查询字符串查询感到困惑。

1 个答案:

答案 0 :(得分:1)

您需要的是Prefix Query

如果您正在索引文档,请执行以下操作:

POST /testing_nested_query/class/
{
    "name": "my name is steve_jobs"
}

您正在使用默认分析器,那么问题是术语steve_jobs将被编入索引作为一个术语。因此,您的术语查询永远无法找到与术语steve匹配的任何文档,因为索引中没有类似术语。前缀查询可以通过在所有索引术语中搜索前缀来帮助您解决问题。

您可以通过制作自定义分析器(阅读thisthis)来解决同样的问题,以便将steve_jobs存储为stevejobs