繁体   English   中英

如何在节点js中使用弹性搜索编写或查询

[英]How to write OR query with elastic search in node js

我有这样的文件

样本文件

    [
  {
    "_index": "xpertdox",
    "_type": "disease",
    "_id": "Ectopic Heartbeat",
    "_score": 24.650267,
    "_source": {
      "category": "Condition",
      "name": "Ectopic Heartbeat",
      "dui": "D005117",
      "url_name": "Extrasystole"
    }
  },

这是我的样本文件。

 if (req.param('disease')) {
searchString = req.param('disease');
filterQuery = { Category: 
   ['disease','Condition','speciality','pharm','medicine']  };


 } else if (req.param('docorhosp')) {
    searchString = req.param('docorhosp');
    filterQuery = { Category: ['hospital', 'doctor'] };
  } else if (req.param('speciality')) {
    searchString = req.param('speciality');
    filterQuery =  { Category: ['speciality'] };
  }
  client.search({
    index: 'xpertdox',
    type: 'disease',
    size: 20,
    body: {
      query: {
        must: {
          match: {
            name: {
              query: searchString,
              fuzziness: 2,
              operator: "or"
            }
          }
        },
        filter : {
          terms : filterQuery
        }
      }
    }
  }).then(function (resp) {
    var data = resp.hits.hits;
    if (isFromSsr) {
      data = helper.prepareSearchDataForSsr(data);
    }
    res.json(data);
  });

我将参数与名称匹配,但是在这里我只想过滤类别为'doctor'或'hospital'的记录。如何使查询发展以获取需求。

尝试这个:

client.search({
    index: 'dox',
    type: 'disease',
    size: 20,
    body: {
      query: {
        must: {
          match: {
            name: {
              query: req.param('disease'),
              fuzziness: 2,
              operator: "or"
            }
          }
        },
        filter: {
          terms: {
            category: ['hospital', 'doctor']
          }
        }
      }
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM