Как искать на основе созданной даты и других полей в упругом поиске - PullRequest
1 голос
/ 07 октября 2019
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
     host: 'ABC',
     log: 'trace'
});

client.search({
index: 'allevents_production',
"body": {
    "query": {
        "query_string": {
            "default_field": "clientname",
            "query": 'ser'
        },
        "range" : {
            "createddate" : {
                "gte" : "now-1d/d",
                "lt" :  "now/d"
            }
        }
    }
}
})

Я хочу выполнить поиск по нескольким полям, таким как имя клиента и createdate . Я передал эти поля в части тела.

Возвращает ошибку. Пожалуйста, помогите мне, где я делаю неправильно. Спасибо!

1 Ответ

1 голос
/ 07 октября 2019

Вам нужно объединить оба ограничения, используя bool/must/filter:

client.search({
index: 'allevents_production',
"body": {
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "default_field": "clientname",
            "query": "ser"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "createddate": {
              "gte": "now-1d/d",
              "lt": "now/d"
            }
          }
        }
      ]
    }
  }
}
})
...