我正在使用Elasticsearch,我是这项技术的新手。我不知道如何使用nodejs在elasticsearch中搜索索引类型的属性值。我的数据是
{
"line_num": 1,
"action1": "ORIGINAL",
"process_code1": "PENDING",
"isPR": "Y",
"req_header_reference_num": "PC5298",
"req_line_reference_num": "PC5298",
"pr_line_no": "1",
"pr_id": "ffd3f7cc6",
"pr_po_flag": "N",
"pr_item_id": "720541"
}
从这个数据我想根据属性值进行搜索。 例 如果我提供" ORIGINAL" ,基于此来从elasticsearch获取特定文档 那怎么解决这个问题呢 提前谢谢
答案 0 :(得分:3)
如果您的目标是匹配任何包含值" ORIGINAL"你必须使用"multi match" query。
在你的例子中,这意味着:
POST /index/type/_search
{
"query": {
"multi_match": {
"query": "ORIGINAL",
"fields": [ "*" ],
"lenient": true
}
}
}
但请注意,这种查询方式效率不高,最好将单个字段与"匹配"匹配。查询:
POST /index/type/_search
{
"query": {
"match": {
"action1" : "ORIGINAL"
}
}
}
在node.js中,您可以使用the official elastic library更轻松地查询弹性搜索。
例如,在您的情况下,您将使用此库编写此类代码:
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
client.search({
index: 'index',
type: 'type',
body: {
query: {
match: {
action1: 'ORIGINAL'
}
}
}
}).then(function (resp) {
var hits = resp.hits.hits;
console.log(hits);
}, function (err) {
console.trace(err.message);
});