“AND”和“OR”使用范围easticsearch

时间:2018-04-26 06:49:57

标签: elasticsearch

我经常搜索,但我的情况没有得到任何结果。

我有弹性搜索的帖子。我想获得帖子

  • author_id = 2或post_id = 2
  • AND创建> 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 :(得分:2)

你几乎就在那里,你只缺少一件事,即指定至少有一个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}}},
    ]
  }
}

答案 1 :(得分:2)

Try this, 

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