复杂文档中的弹性搜索

时间:2014-05-10 09:33:58

标签: elasticsearch

我有一份文件如下。我想做一个搜索,但我不能这样做,因为我缺乏知识。请帮忙。如何在复杂聚合中对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
}

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果您只想要使用" Name" :" Mustang"你可以用

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

答案 2 :(得分:0)

有两个问题:

  1. 您正在使用term过滤器搜索索引中的Mustang令牌,但正在使用标准分析器,因此它实际上已编入索引为mustang
  2. 您正在错误的字段中搜索。您应该使用嵌套表示法,例如Type.Name
  3. 此查询应按预期工作:

    {"query":{ "filtered": { "filter": { "term": { "Type.Name": "mustang" } }}}}