elasticsearch,Javascript,Node.js,elasticsearch" /> elasticsearch,Javascript,Node.js,elasticsearch" />

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”