ElasticSearch中的嵌套查询-两个级别

时间:2018-06-20 13:42:01

标签: elasticsearch

我有下一个映射:

hallo<span>&nbsp;again</span>

我需要一个查询,而不是在以下情况下提供所有cr:

an.id == x和sm.id == y

我尝试过:

"c_index": {
    "aliases": {},
    "mappings": {
        "an": {
            "properties": {
                "id": {
                    "type": "string"
                },
                "sm": {
                    "type": "nested",
                    "properties": {
                        "cr": {
                            "type": "nested",
                            "properties": {
                                "c": {
                                    "type": "string"
                                },
                                "e": {
                                    "type": "long"
                                },
                                "id": {
                                    "type": "string"
                                },
                                "s": {
                                    "type": "long"
                                }
                            }
                        },
                        "id": {
                            "type": "string"
                        }
                    }
                }
            }
        }
    }

但是运行速度很慢,并且提供的信息比我需要的更多。 最有效的方法是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

这里不需要嵌套查询。另外,如果要查找与所有查询匹配的文档,请使用filter而不是should(例外情况是,如果您希望查询影响得分,例如match查询,情况并非如此,那么您可以使用should + minimum_should_match选项)

{ 
  "query": {
    "bool": {
      "filter": [
        { "term": { "_id": "x" } },
        { "term": { "sm.id": "y" } }
      ]
    }
  }
}