我使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)。任何关于弹性/ js的坚实信息来源将不胜感激
答案 0 :(得分:1)
您可以将所有条款放在bool query的
关于elastic.js我个人认为这是一个很棒的软件,也有很好的文档记录。看一下API documentation。
答案 1 :(得分:0)
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);