此查询仅返回一项" steve_jobs"。
{
"query": {
"constant_score": {
"filter": {
"term": {
"name":"steve_jobs"
}
}
}
}
}
所以,现在我想让所有名字前缀为steve_
的人。所以我试试这个:
{
"query": {
"constant_score": {
"filter": {
"term": {
"name": "steve_"
}
}
}
}
}
这没有任何回报。为什么呢?
我对何时使用术语查询/术语过滤器/术语过滤器/查询字符串查询感到困惑。
答案 0 :(得分:1)
您需要的是Prefix Query。
如果您正在索引文档,请执行以下操作:
POST /testing_nested_query/class/
{
"name": "my name is steve_jobs"
}
您正在使用默认分析器,那么问题是术语steve_jobs
将被编入索引作为一个术语。因此,您的术语查询永远无法找到与术语steve
匹配的任何文档,因为索引中没有类似术语。前缀查询可以通过在所有索引术语中搜索前缀来帮助您解决问题。
您可以通过制作自定义分析器(阅读this和this)来解决同样的问题,以便将steve_jobs
存储为steve
和jobs
。