嵌套查询中的多个路径

时间:2017-08-12 17:26:01

标签: elasticsearch

我从elasticsearch论坛(https://discuss.elastic.co/t/multiple-paths-in-nested-query/96851/1

交叉发布此内容

下面是一个例子,但首先我会告诉你我的用例,因为我不确定这是不是一个好方法。我正在尝试自动索引大量的类型化数据。这意味着我正在尝试根据有关我的数据的信息自动生成这些映射的映射和查询。我的很多数据都是关系数据,我对能够在关系中进行搜索感兴趣,因此我也对使用嵌套数据类型感兴趣。

然而,问题是这些类型中的许多都有大约10个关系,我觉得将一个嵌套查询的10个完全相同的副本传递给elasticsearch只是为了查询10个不同的嵌套不是一个好主意路径相同。因此,我想知道是否可以将多个路径传递到单个查询中?更好的是,如果可以在单个查询中搜索当前文档及其所有嵌套文档及其字段中的所有字段。我知道对象字段,它们不适合,因为我想要检索匹配的嵌套文档的一些数据。

在这个例子中,我创建了一个包含多个嵌套类型和一些自己的类型的索引,上传文档,并尝试查询文档及其所有嵌套文档,但是失败了。有没有办法在不重复每个嵌套文档的查询的情况下执行此操作,或者这实际上是一种高效的方法吗?感谢

PUT /my_index
{
    "mappings": {
        "type1" : {
            "properties" : {
                "obj1" : {
                    "type" : "nested",
                    "properties": {
                      "name": {
                        "type":"text"
                      },
                      "number": {
                        "type":"text"
                      }
                    }
                },
                "obj2" : {
                    "type" : "nested",
                    "properties": {
                      "color": {
                        "type":"text"
                      },
                      "food": {
                        "type":"text"
                      }
                    }
                },
                "lul":{
                  "type": "text"
                },
                "pucci":{
                  "type": "text"
                }
            }
        }
    }
}
PUT /my_index/type1/1
{
  "obj1": [
    { "name":"liar", "number":"deer dog"},
    { "name":"one two three", "number":"you can call on me"},
    { "name":"ricky gervais", "number":"user 123"}
    ],
  "obj2": [
    { "color":"red green blue", "food":"meatball and spaghetti"},
    { "color":"orange", "food":"pineapple, fish, goat"},
    { "color":"none", "food":"none"}
    ],
  "lul": "lul its me user123",
  "field": "one dog"

}
POST /my_index/_search
{
  "query": {
    "nested": {
      "path": ["obj1", "obj2"],
      "query": {    
        "query_string": {
          "query": "ricky",
          "all_fields": true
        }   
      }
    }
  }
}

0 个答案:

没有答案