简体   繁体   中英

How to fetch particular documents in elasticsearch index

I want to fetch all the data of the corresponding particular field, and have a response of the elastic search.

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

I tried search function it returning an error.

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

Error showing:

{ Error: [illegal_argument_exception] request [/_search] contains unrecognized parameter: [query]

Please suggest me how to solve this kind of problem.

You should specify your field under default_field , not the value you are looking for. The field you are trying to query is clientname in your case, and the value you are looking for is omkarpathlab . So your query should be as follows:

"query": {
    "query_string": {
    "default_field": "clientname",
    "query": "omkarpathlab"
    }
}

edit. But your query inside of the body property:

client.search({
  "size": 20,
  "body": {
    "query": {
      "query_string": {
        "default_field": "clientname",
        "query": "omkarlab"
      }
    }
  }
}).then((res) => {
  console.log("resultData", res);
}, (err) => {
  console.log("err", err);
});

You can use below code to connect to elasticsearch. I have tested it on 5.6 version

'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)

Code is a sample from https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/search_examples.html site.

for search documentation check below link https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#_search

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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