Javascript 如何在elasticsearch索引中获取特定文档
我想获取相应特定字段的所有数据,并进行弹性搜索Javascript 如何在elasticsearch索引中获取特定文档,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,我想获取相应特定字段的所有数据,并进行弹性搜索 { "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 35, "relation": "eq" }, "max_score": 0.44183275,
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 35,
"relation": "eq"
},
"max_score": 0.44183275,
"hits": [
{
"_index": "allevents",
"_type": "_doc",
"_id": "jQPDaG0BcOh3oggcguoV",
"_score": 0.44183275,
"_source": {
"category": "sessions",
"contentid": "KqRLj2lWZ3",
"clientname": "omkarpathlab",
------------------
}]
我尝试了搜索功能它返回了一个错误
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'aaa',
log: 'trace',
apiVersion: '7.1'
});
client.search({
"size": 20,
"query": {
"query_string": {
"default_field": "clientname",
"query": "omkarlab"
}
}
}).then((res) => {
console.log("resultData", res);
}, (err) => {
console.log("err", err);
});
enter code here
错误显示:
{错误:[非法参数\u异常]请求[/\u搜索]包含无法识别的参数:[查询]
请建议我如何解决此类问题。您应该在
默认\u field
下指定您的字段,而不是您要查找的值。您尝试查询的字段是clientname
,您要查找的值是omkarpathlab
。因此,您的查询应如下所示:
"query": {
"query_string": {
"default_field": "clientname",
"query": "omkarpathlab"
}
}
编辑。但您在body属性内的查询:
client.search({
"size": 20,
"body": {
"query": {
"query_string": {
"default_field": "clientname",
"query": "omkarlab"
}
}
}
}).then((res) => {
console.log("resultData", res);
}, (err) => {
console.log("err", err);
});
您应该在
default\u field
下指定您的字段,而不是您要查找的值。在您的情况下,您试图查询的字段是clientname
,您要查找的值是omkarpathlab
。因此,您的查询应该如下所示:
"query": {
"query_string": {
"default_field": "clientname",
"query": "omkarpathlab"
}
}
编辑。但您在body属性内的查询:
client.search({
"size": 20,
"body": {
"query": {
"query_string": {
"default_field": "clientname",
"query": "omkarlab"
}
}
}
}).then((res) => {
console.log("resultData", res);
}, (err) => {
console.log("err", err);
});
您可以使用下面的代码连接到elasticsearch。我已经在5.6版本上对其进行了测试
'use strict'
const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://XXX:9200' })
async function run () {
// Let's search!
const { body } = await client.search({
index: 'XXX',
type : 'XXX',
body: {
query: {
match_all: {}
}
}
})
console.log(body.hits.hits)
}
run().catch(console.log)
代码是来自站点的示例
有关搜索文档,请查看下面的链接
您可以使用下面的代码连接到elasticsearch。我已经在5.6版本上对其进行了测试
'use strict'
const { Client } = require('@elastic/elasticsearch')
const client = new Client({ node: 'http://XXX:9200' })
async function run () {
// Let's search!
const { body } = await client.search({
index: 'XXX',
type : 'XXX',
body: {
query: {
match_all: {}
}
}
})
console.log(body.hits.hits)
}
run().catch(console.log)
代码是来自站点的示例
有关搜索文档,请查看下面的链接
错误是什么?错误:[非法参数\u异常]请求[/\u搜索]包含无法识别的参数:[查询]您使用的是最新版本的elasticsearch客户端吗?根据最新文档,您不应该在json@mkalsi中传递查询对象。我使用的是最新版本。您能告诉我如何传递查询对象吗错误是什么吗?错误:[非法参数\u异常]请求[/\u搜索]包含无法识别的参数:[query]您使用的是最新版本的elasticsearch客户端吗?根据最新文档,您不应该在json@mkalsi中传递查询对象。我使用的是最新版本。您能告诉我如何传递查询吗object@RahulSaini你能把准确的错误添加到你原来的帖子中吗?当我使用它时,它会返回结果>client.search({index:'allevents',})。然后((res)=>{console.log(“resultData”,res);},(err)=>{console.log(“err”,err);});但也不知道如何通过查询过滤器。@Rahusaini我想您必须将查询放在正文中,您能检查我更新后的回复吗。@Rahusaini您能将准确的错误添加到您的原始帖子中吗?当我使用它时,它返回结果>客户端。搜索({index:'allevents',})。然后((res)=>{console.log(“resultData”,res);},(err)=>{console.log(“err”,err);});但也不知道如何通过查询筛选器。@Rahusaini我想你必须将查询放在正文中,你能检查我更新的响应吗。我通过npm命令安装了elasticsearch,所以它显示“elasticsearch”:“^16.4.0”我通过npm命令安装了elasticsearch,因此它显示“elasticsearch”:“^16.4.0”