Как получить определенные документы в индексе эластичного поиска - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу получить все данные соответствующего определенного поля и получить ответ от упругого поиска.

{
"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

Отображается ошибка:

{Ошибка: запрос [недопустимого_аргумента] [/ _search] содержит нераспознанный параметр: [запрос]

Пожалуйста, предложите мнекак решить эту проблему.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Вы должны указать свое поле под default_field, а не значение, которое вы ищете.Поле, которое вы пытаетесь запросить, - clientname в вашем случае, а значение, которое вы ищете - omkarpathlab.Поэтому ваш запрос должен выглядеть следующим образом:

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

edit.Но ваш запрос внутри свойства 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);
});
0 голосов
/ 26 сентября 2019

Вы можете использовать приведенный ниже код для подключения кasticsearch.Я протестировал его на версии 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...