该查询仅返回“steve_jobs”一项。

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

所以,现在我想让所有人都带有名字前缀steve_。所以我尝试这样:
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "name": "steve_"
        }
      }
    }
  }
}

这什么也没返回。为什么?

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

最佳答案

您需要的是Prefix Query

如果要像这样索引文档:

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

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

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

08-08 02:14