该查询仅返回“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
相匹配的文档,因为索引中没有类似的字词。前缀查询可通过在所有索引术语中搜索前缀来帮助您解决问题。您可以通过制作自定义分析器(读取this和this)来解决相同的问题,以便将
steve_jobs
存储为steve
和jobs
。