Elasticsearch数组中的javascript搜索字段

时间:2016-09-01 11:50:53

标签: javascript angularjs elasticsearch

这直接来自elasticsearch documentation.

client.search({
  index: 'myindex',
  body: {
    query: {
      match: {
        title: 'test'
      }
    }
  }
}, function (error, response) {
  // ...
});

我想要达到的目标是相同的但是搜索多个标题。

等同于if title in ['title1', 'title2', 'title3']

的排序

但是title: ['title1', 'title2', 'title3']会将错误作为查询字符串。

还有另一个建议使用过滤器,但它似乎没有任何影响。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

正确的方法是将所有标题值附加到查询字符串中,因为它将被分析,因此title字段将与每个标记匹配。

client.search({
  index: 'myindex',
  body: {
    query: {
      match: {
        title: 'title1 title2 title3'
      }
    }
  }
}, function (error, response) {
  // ...
});

<强>更新

如果您搜索未分析的值,则应该更喜欢terms查询:

client.search({
  index: 'myindex',
  body: {
    query: {
      terms: {
        title: ['title1', 'title2', 'title3']
      }
    }
  }
}, function (error, response) {
  // ...
});