2016-09-01 59 views
0

搜索領域這直接來自elasticsearch documentation.Elasticsearch JavaScript的數組

client.search({ 
    index: 'myindex', 
    body: { 
    query: { 
     match: { 
     title: 'test' 
     } 
    } 
    } 
}, function (error, response) { 
    // ... 
}); 

我所試圖實現的是相同的,但搜索多個頭銜。

排序的if title in ['title1', 'title2', 'title3']

然而title: ['title1', 'title2', 'title3']的equivallent的給出錯誤作爲查詢字符串。

還有一個建議使用過濾器,但它似乎沒有任何效果。任何建議將不勝感激。

回答

1

正確的方法是將所有標題值附加到您的查詢字符串中,因爲它將被分析,因此title字段將與每個標記進行匹配。

client.search({ 
    index: 'myindex', 
    body: { 
    query: { 
     match: { 
     title: 'title1 title2 title3' 
     } 
    } 
    } 
}, function (error, response) { 
    // ... 
}); 

UPDATE

如果搜索沒有分析的價值,你應該更喜歡terms查詢:

client.search({ 
    index: 'myindex', 
    body: { 
    query: { 
     terms: { 
     title: ['title1', 'title2', 'title3'] 
     } 
    } 
    } 
}, function (error, response) { 
    // ... 
}); 
+0

我非分析領域(IDS),這方法搜索回擊0次。 –

+0

更新了我的答案 – Val

+0

謝謝!有沒有一種方法可以將'terms'和'match'結合起來(分析和非分析搜索)?像'title:['title1','title2','title3']''和'author:'myAuthor''? –