具有两个字段和条件的mongoosastic搜索

时间:2016-10-27 08:47:27

标签: node.js mongodb elasticsearch mongoosastic

我有一个使用弹性搜索集成在Angular js,Node.js,MongoDB中开发的聊天应用程序。我为聊天提供了搜索功能,用户可以输入任意组合。选项包括聊天消息,用户和日期。

所以我想在nodejs的帮助下搜索弹性搜索数据库,并使用多个字段组合。例如,1)用username =' mohan'进行搜索和日期=' anydate',2)用户名=' mohan'和chatmessage ='你好'。

所以结果应该满足两个条件。

我们如何使用mongoosastic实现这一目标?我试过下面的查询。但是它给出了OR条件的结果,我想要AND条件。

{
    "query": {
        "bool": {
            "should": [{
                "match": {
                    "feedMsg": "Hi there"
                }
            }, {
                "match": {
                    "userId": 'mohan'
                }
            }, {
                "range": {
                    "feedTime": {
                        "from": '27/10/2016',
                        "to": '27/10/2016'
                    }
                }
            }]
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。使用必须的Bool查询对我有用。

{
   "bool" : {
      "must" :     [],
      "should" :   [],
      "must_not" : [],
      "filter":    []
   }
}
  1. 必须 - 所有这些条款必须匹配。相当于AND。
  2. must_not - 所有这些条款必须不匹配。相当于     不。
  3. 应该 - 这些条款中至少有一个必须匹配。相当于OR。
  4. filter - 必须匹配但在非得分中运行的子句, 过滤模式。