簡體   English   中英

彈性查詢以匹配BoolQuery中提供的任何條件

[英]Elastic query to match any of provided conditions in 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM