2014-05-10 45 views
0

我有一个文档如下。我想做一个搜索,但我不能这样做,因为我缺乏知识。请帮忙。我如何在复杂聚合中的ElasticSearch中进行搜索?在复杂文档中弹性搜索

我的文档

{ 
    "_index": "vehicles", 
    "_type": "car", 
    "_id": "e16bd474-fa8e-4858-ab6c-3bbb3d0aa603", 
    "_version": 1, 
    "found": true, 
    "_source": { 
    "Type": { 
    "Name": "Mustang" 
    } 
} 

}

我的搜索查询

GET _search 
    { 
"query":{ 
    "filtered": { 
     "filter": { 
      "term": { 
       "Name": "Mustang" 
      } 
      } 
     } 

    }, 
"from":0, 
"size":10 
} 

回答

0

如果你只是想用 “名” DOC: “野马”,你可以使用

"query" : { "bool" : { "must" : { "term" : { "Name" : "Mustang" } } } }

+0

我很高兴地看到,响应,但没了它没有工作。因为我怀疑这个对象是一个聚合汽车和cartype。汽车类型有一个属性名称。我正试图在那里搜索。 –

1

Standard Analyzer正在应用于您的Name字段,因此术语Mustang正在作为mustang存储在索引中。更改您的查询使用"Name": "mustang",你应该得到一个匹配。

0

这里有两个问题:

  1. 您正在使用term滤波器,它在索引中搜索Mustang令牌,但正在使用标准分析器所以它实际上是索引为mustang
  2. 您正在错误的字段中搜索。您应该使用嵌套表示法,例如Type.Name

该查询应该按预期工作:

​​