elasticsearch 有没有办法建立一个;或;使用Bodybuilder ElasticSearch的has_儿童 { “查询”: { “布尔”: { “应该”:[ { “has_child”:{ “内部点击”:{}, “类型”:“emp”, “查询”:{ “匹配”:{ “名称”:“xyz” } } } }, { “布尔”: { “必须”: [ { “匹配”:{“名称”:“xyz”} }, { “匹配”:{“_类型”:“emps”} } ], “不得”:[ { “has_child”:{ “类型”:“emp”, “查询”:{ “存在”: { “字段”:“名称” } } } } ] } } ] } } },elasticsearch,elasticsearch" /> elasticsearch 有没有办法建立一个;或;使用Bodybuilder ElasticSearch的has_儿童 { “查询”: { “布尔”: { “应该”:[ { “has_child”:{ “内部点击”:{}, “类型”:“emp”, “查询”:{ “匹配”:{ “名称”:“xyz” } } } }, { “布尔”: { “必须”: [ { “匹配”:{“名称”:“xyz”} }, { “匹配”:{“_类型”:“emps”} } ], “不得”:[ { “has_child”:{ “类型”:“emp”, “查询”:{ “存在”: { “字段”:“名称” } } } } ] } } ] } } },elasticsearch,elasticsearch" />

elasticsearch 有没有办法建立一个;或;使用Bodybuilder ElasticSearch的has_儿童 { “查询”: { “布尔”: { “应该”:[ { “has_child”:{ “内部点击”:{}, “类型”:“emp”, “查询”:{ “匹配”:{ “名称”:“xyz” } } } }, { “布尔”: { “必须”: [ { “匹配”:{“名称”:“xyz”} }, { “匹配”:{“_类型”:“emps”} } ], “不得”:[ { “has_child”:{ “类型”:“emp”, “查询”:{ “存在”: { “字段”:“名称” } } } } ] } } ] } } }

elasticsearch 有没有办法建立一个;或;使用Bodybuilder ElasticSearch的has_儿童 { “查询”: { “布尔”: { “应该”:[ { “has_child”:{ “内部点击”:{}, “类型”:“emp”, “查询”:{ “匹配”:{ “名称”:“xyz” } } } }, { “布尔”: { “必须”: [ { “匹配”:{“名称”:“xyz”} }, { “匹配”:{“_类型”:“emps”} } ], “不得”:[ { “has_child”:{ “类型”:“emp”, “查询”:{ “存在”: { “字段”:“名称” } } } } ] } } ] } } },elasticsearch,elasticsearch,不,很遗憾 事实上,是的。我错了。OP发布在Bodybuilder的github上,并收到以下回复: 这有点奇怪,但我是这样写的: 有事 注意:奥奎里家族的顺序在这里很重要,它不起作用 如果这些都被切换了,这是不理想的。我想那是因为 bool条款是如何合并的。让我知道这不是 为你工作 对不起,把你引错了方向。我更正了我的答案。 { "query": { "bool": { "should": [ { "has_child

不,很遗憾

事实上,是的。我错了。OP发布在Bodybuilder的github上,并收到以下回复:

这有点奇怪,但我是这样写的:

有事 注意:奥奎里家族的顺序在这里很重要,它不起作用 如果这些都被切换了,这是不理想的。我想那是因为 bool条款是如何合并的。让我知道这不是 为你工作


对不起,把你引错了方向。我更正了我的答案。 { "query": { "bool": { "should": [ { "has_child": { "inner_hits":{}, "type": "emp", "query": { "match": { "name": "xyz" } } } }, { "bool": { "must": [ { "match" : { "name" : "xyz" } }, { "match" : { "_type" : "emps" } } ], "must_not": [ { "has_child": { "type": "emp", "query": { "exists": { "field": "name" } } } } ] } } ] } } }
var inner = bodybuilder()
    .query('match', 'name', 'xyz')  
    .query('match', '_type', 'emps')    
    .notQuery('has_child', {type: 'emp'}, (q) => {
        return q.query('exists', 'field', 'name')
    })
    .build()

bodybuilder()
    .orQuery('bool', inner.query.bool)
        .orQuery('has_child', {inner_hits: {}, type: 'emp'}, (q) => {
        return q.query('match', 'name', 'xyz')  
    })
    .build()