如何在elasticsearch中搜索嵌套文档中的确切文本

时间:2014-05-28 12:02:24

标签: elasticsearch

我有这样的索引,

        "_index": "test",
        "_type": "products",
        "_id": "URpYIFBAQRiPPu1BFOZiQg",
        "_score": null,
        "_source": {

           "currency": null,
           "colors": [],
           "api": 1,
           "sku": 9999227900050002,               
           "category_path": [
              {
                 "id": "cat00000",
                 "name": "B1"
              },
              {
                 "id": "abcat0400000",
                 "name": "Cameras & Camcorders"
              },
              {
                 "id": "abcat0401000",
                 "name": "Digital Cameras"
              },
              {
                 "id": "abcat0401005",
                 "name": "Digital SLR Cameras"
              },
              {
                 "id": "pcmcat180400050006",
                 "name": "DSLR Package Deals"
              }
           ],
           "price": 1034.99,              
           "status": 1,
           "description": null,               
        }

我想在category_path字段中仅搜索确切的文本["摄像机"]。 我做了一些匹配查询,但它搜索了所有有"摄像机"作为文本的一部分。有人可以帮我解决这个问题。

由于

2 个答案:

答案 0 :(得分:1)

要在嵌套字段中搜索,请使用以下查询

 {
  "query": {
    "term": {
       "category_path.name": {
          "value": "b1"
       }
    }
  }
}

它有帮助......!

答案 1 :(得分:0)

您可以使用raw_name分析器再添加一个嵌套字段not_analyzed并与之匹配。