[英]Multi-field search in the elasticsearch-js library
我正在將Elasticsearch (來自searchly的托管實例)與elasticsearch -js npm客戶端庫一起使用。 我想從一個詞中搜索索引中的多個字段。 似乎有大量的文檔 ,例如
GET /_search
{
"query": {
"bool": {
"should": [
{ "match": { "title": "War and Peace" }},
{ "match": { "author": "Leo Tolstoy" }}
]
}
}
}
在這里我可以為作者和標題設置相同的值。 但是,這是一個get請求,其結構與我在其中執行的nodejs庫不同:
this._client.search({
index: 'sample',
body: {
query: {
match: {
name: 'toFind'
}
}
}
}).then(function (resp) {
var hits = resp.hits.hits;
}, function (err) {
console.trace(err.message);
});
我不能有多個match:
否則,字段tsc會抱怨嚴格模式,如果我嘗試類似的操作:
query: {
match: {
name: 'toFind',
description: 'toFind'
}
}
然后我得到一個錯誤:
“ type”:“ query_parsing_exception”,
“ reason”:“ [match]查詢以簡化的形式解析,具有直接的字段名稱,但除了字段名稱之外,還包含更多選項,可能使用帶有\\ u0027query \\ u0027元素的\\ u0027options \\ u0027形式?
由於要在多個字段上匹配相同的字符串,因此需要多次匹配查詢。 試試這個
this._client.search({
index: 'sample',
body: {
query: {
multi_match: {
query: 'toFind',
fields: ['name','description']
}
}
}
}).then(function (resp) {
var hits = resp.hits.hits;
}, function (err) {
console.trace(err.message);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.