«И» и «ИЛИ» запрашивают вместе, используя диапазон easticsearch - PullRequest
0 голосов
/ 26 апреля 2018

Я много искал, но ничего не получил для своего дела.

У меня есть сообщения в упругом поиске.Я хочу получать сообщения, которые

  • author_id = 2 ИЛИ post_id = 2
  • И создали> 1524722310000

Я использовал это, но не работало.Он извлекает все сообщения, которые создал > 1524722310000, и не проверяет author_id и post_id !

query: {
  bool: {
    should: [
        {match: {"author_id" : 2}},
        {match: {"post_id"   : 2}}
    ],
    filter: [
        {range: {"created": {gte : startTime , lte:targetTime}}},
    ]
  }
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018
Try this, 

query: {
    bool: {
        must: [
                {match: {"author_id" : 2}},
                {match: {"post_id"   : 2}},
                {range: {"created": {gte : startTime , lte:targetTime}}}
              ] 
          }
      }
0 голосов
/ 26 апреля 2018

Вы почти на месте, вам не хватает только одного, то есть указать, что хотя бы одно предложение should должно совпадать, и вы можете сделать это следующим образом:

query: {
  bool: {
    minimum_should_match: 1,               <-- add this line
    should: [
        {match: {"author_id" : 2}},
        {match: {"post_id"   : 2}}
    ],
    filter: [
        {range: {"created": {gte : startTime , lte:targetTime}}},
    ]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...