Elasticsearch 6.3.2术语匹配空数组“加上”其他

时间:2019-05-09 03:50:09

标签: ruby-on-rails elasticsearch elasticsearch-rails elasticsearch-ruby

在我的数据库中,帖子可以有零(0)个或更多类别,以数组表示。

当我执行查询时,要在这些类别中查找并传递一些值:

{
  "query": {
    "bool": {
      "should": {
        "terms": {
          "categories": ["First", "Second", "And so on"]
        }
      }
    }
  }
}

而且效果很好,我有期望的记录。但是问题出在我想包括那些帖子,其中类别是一个空数组([])。

我正在从旧版本的ES(1.4.5)升级到版本6.3.2,并且此代码是使用“ missing”(已弃用)制作的。

我尝试更改映射,添加著名的"null_value": "NULL",然后进行查询,但是没有用。 还尝试过将must与must_not结合使用,如升级“ missing”的建议,但没有用。

我该如何实现?这意味着如果我已经建立索引:

Post.new(id: 1, title: '1st', categories: [])
Post.new(id: 2, title: '2nd', categories: ['news', 'tv'])
Post.new(id: 3, title: '3rd', categories: ['tv', 'trending'])
Post.new(id: 4, title: '4th', categories: ['movies'])
Post.new(id: 5, title: '5th', categories: ['technology', 'music'])

结果应返回1、2和3的帖子-以“新闻”,“电视”或空数组为类别的帖子。

1 个答案:

答案 0 :(得分:2)

可以使用constructor(props) { super(props); this.state = {}; this.selectedOpacity = this.selectedOpacity.bind(this); } 中的onPress={this.selectedOpacity} 复制缺少的内容。您必须修改查询,如下所示:

exists

您可以阅读有关here的信息。