gpt4 book ai didi

javascript - elasticsearch-js库中的多字段搜索

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:26 24 4
gpt4 key购买 nike

我正在使用elasticsearch(来自 searchly 的托管实例)和 elasticsearch-js npm 客户端库。我想从一个术语搜索索引中的多个字段。似乎有很多documentation对此,例如

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] query parsed in simplified form, with direct field name, but included more options than just the field name, possibly use its \u0027options\u0027 form, with \u0027query\u0027 element?",

最佳答案

由于您想在多个字段上匹配相同的字符串,因此您需要 multi match询问。尝试这样的事情

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);
});

关于javascript - elasticsearch-js库中的多字段搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com