繁体   English   中英

如何获取 elasticsearch 索引中的特定文档

[英]How to fetch particular documents in elasticsearch index

我想获取相应特定字段的所有数据,并获得弹性搜索的响应。

{
"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",
------------------
}]

我尝试搜索 function它返回错误。

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

错误显示:

{ 错误:[illegal_argument_exception] 请求 [/_search] 包含无法识别的参数:[query]

请建议我如何解决此类问题。

您应该在default_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)

代码是来自https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/search_examples.html站点的示例。

对于搜索文档,请查看以下链接https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#_search

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM