弹性查询,以匹配BoolQuery中提供的任何条件



我让elastic.js构建这样的动态查询:

{
    "size": 15,
    "query": {
        "bool": {
            "must": [
                { "term": { "tag": { "term": "rocket" } } },
                { "term": { "name": { "term": "space" } } }
            ],
            "should": [
                { "wildcard": { "place": { "value": "Moo*" } } }
            ]
        }
    }
}

这个的Elastic.js代码是(Translator):

ejs.Request()
    .size(15)
    .query(
      ejs.BoolQuery()
        .must(ejs.TermQuery('tag', 'rocket'))
        .must(ejs.TermQuery('name', 'space'))
        .should(ejs.WildcardQuery('place', 'Moo*'))
)

效果很好,我很高兴,我希望它是这样的。但是我意识到我需要添加一个选项来执行这个查询与OR条件,而不是AND现在。

查找符合任何条件的文档。

这个任务没有给我留下任何线索(甚至关于DSL将完成此目的)。

我看过OrFilter,但我不知道如何正确使用它(特别是使用elasticJS)。关于elastic/js的任何可靠的信息来源都将非常感谢

您可以将所有子句放在bool查询的should部分。

关于elastic.js,我个人认为它是一个很棒的软件,文档也很好。查看它的API文档

var r = ejs.Request({indices: index, types: type}),
    boolQ = ejs.BoolQuery();
boolQ.should(ejs.FieldQuery("DEAL_NAME","value")).defaultOperator("AND"));
boolQ.should(ejs.TermQuery( "DEAL_MOTTO","value"));                     
boolQ.should(ejs.FieldQuery("dealaddresses.CITY","value").defaultOperator("AND"));
r.query(boolQ);

最新更新