带有布尔的弹性搜索过滤器查询返回无效结果

可视化

我在Laravel中使用弹性搜索。

所以我有返回正确结果的查询:

$results = Es::search(array(
    'index' => 'testindex',
    'type' => $type,
    'body' => [
        'query' => [
            'filtered' => [
                'query' => [
                    'match' => [
                        '_all' => '2015-02'
                    ]
                ],
                'filter' => [
                    'bool' => [
                        'must' => [
                            'term' => [
                                'type' => 11
                            ]
                        ],
                    ]
                ]
            ]
        ],
        'size' => 5,
        'from' => 0
    ]
));

它的作用是:

  • 在所有字段中搜索$ query并且
  • 字段“类型”必须为11。

输出结果是http : //pastebin.com/icWniix4总共9条结果,这是正确的。

但是当我添加另一个必须项时,它将返回无效结果

$results = Es::search(array(
    'index' => 'testindex',
    'type' => $type,
    'body' => [
        'query' => [
            'filtered' => [
                'query' => [
                    'match' => [
                        '_all' => '2015-02'
                    ]
                ],
                'filter' => [
                    'bool' => [
                        'must' => [
                            'term' => [
                                'type' => 11
                            ],
                            'term' => [
                                'public' => 1
                            ]
                        ],
                    ]
                ]
            ]
        ],
        'size' => 5,
        'from' => 0
    ]
));

因此,这仅添加了“公共”一词。它的作用是:

  • 在所有字段中搜索$ query并且
  • 字段“类型”必须为11 AND
  • 字段“ public”必须为1

因此,现在的结果总计为429。它会忽略“类型”项,并返回所有带有“ public” = 1的内容。但是根据文档,如果我使用MUST,则它应该与所有它们匹配。搜索结果http://pastebin.com/cVcatcyi

那么我该如何编写所需的查询呢?$查询+类型+公共

官方文档无法回答我的问题。

有什么建议吗?

chang

这是您的麻烦点:

                    'must' => [
                        'term' => [
                            'type' => 11
                        ],
                        'term' => [
                            'public' => 1
                        ]
                    ]

在这里,您将分配must一个仅具有一个唯一键的关联数组的值-term实际上被分配了两次,因此,大概只有其中一个分配会“存活”(大概是public生存的,因为它出现在定义的最后)。最终结果是must指向仅具有一个键值对的关联数组。

我怀疑您要做的是:

                    'must' => [
                        [
                            'term' => [
                                'type' => 11
                            ]
                        ],
                        [
                            'term' => [
                                'public' => 1
                            ]
                        ]
                    ]

现在must实际上是指向一个包含两个项目的数组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带有布尔的弹性搜索过滤器查询返回无效结果

来自分类Dev

弹性搜索 更像这个带有过滤器的查询是添加结果

来自分类Dev

PHP Elasticsearch,带有过滤器的布尔查询未获得任何结果

来自分类Dev

带有过滤器的AppEngine数据存储区查询从不返回结果(Go)

来自分类Dev

带有多个过滤器的Elasticsearch搜索查询

来自分类Dev

使用术语过滤器的弹性搜索过滤查询

来自分类Dev

使用术语过滤器的弹性搜索过滤查询

来自分类Dev

弹性搜索地理位置查询过滤器

来自分类Dev

弹性搜索过滤器/查询中的多个 bool 子句

来自分类Dev

在弹性搜索中使用带有过滤器的聚合

来自分类Dev

带有过滤器的多个字段的弹性搜索分组

来自分类Dev

返回页面时,带有过滤器搜索页面的Flutter不断从查询中添加相同的列表视图

来自分类Dev

弹性搜索,最有效的布尔映射过滤器,即选择所有true / false

来自分类Dev

弹性搜索:具有聚合功能的ngram过滤器

来自分类Dev

布尔过滤器不只显示弹性搜索中的过滤数据

来自分类Dev

弹性搜索嵌套过滤器

来自分类Dev

带有RecyclerView过滤的SearchView过滤器,结果错误

来自分类Dev

因为带有mybatis和spring的搜索过滤器会返回整个表

来自分类Dev

ElasticSearch 5.1 带有多重过滤器的过滤查询

来自分类Dev

Django | 查询过滤器返回的结果超出预期

来自分类Dev

Django过滤器返回以输入的查询开头的结果

来自分类Dev

Elasticsearch Bool过滤器查询返回结果

来自分类Dev

两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

来自分类Dev

为什么我的graphQL查询返回没有“ where”过滤器的结果?

来自分类Dev

弹性搜索。嵌套网络:弹性属性的术语过滤器

来自分类Dev

带有搜索输入的jQuery Json过滤器,无需使用任何过滤器插件

来自分类Dev

在带有Cards的RecyclerView上添加搜索过滤器?

来自分类Dev

带有搜索过滤器的角度自动完成

来自分类Dev

带有替换和搜索功能的熊猫过滤器

Related 相关文章

  1. 1

    带有布尔的弹性搜索过滤器查询返回无效结果

  2. 2

    弹性搜索 更像这个带有过滤器的查询是添加结果

  3. 3

    PHP Elasticsearch,带有过滤器的布尔查询未获得任何结果

  4. 4

    带有过滤器的AppEngine数据存储区查询从不返回结果(Go)

  5. 5

    带有多个过滤器的Elasticsearch搜索查询

  6. 6

    使用术语过滤器的弹性搜索过滤查询

  7. 7

    使用术语过滤器的弹性搜索过滤查询

  8. 8

    弹性搜索地理位置查询过滤器

  9. 9

    弹性搜索过滤器/查询中的多个 bool 子句

  10. 10

    在弹性搜索中使用带有过滤器的聚合

  11. 11

    带有过滤器的多个字段的弹性搜索分组

  12. 12

    返回页面时,带有过滤器搜索页面的Flutter不断从查询中添加相同的列表视图

  13. 13

    弹性搜索,最有效的布尔映射过滤器,即选择所有true / false

  14. 14

    弹性搜索:具有聚合功能的ngram过滤器

  15. 15

    布尔过滤器不只显示弹性搜索中的过滤数据

  16. 16

    弹性搜索嵌套过滤器

  17. 17

    带有RecyclerView过滤的SearchView过滤器,结果错误

  18. 18

    因为带有mybatis和spring的搜索过滤器会返回整个表

  19. 19

    ElasticSearch 5.1 带有多重过滤器的过滤查询

  20. 20

    Django | 查询过滤器返回的结果超出预期

  21. 21

    Django过滤器返回以输入的查询开头的结果

  22. 22

    Elasticsearch Bool过滤器查询返回结果

  23. 23

    两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

  24. 24

    为什么我的graphQL查询返回没有“ where”过滤器的结果?

  25. 25

    弹性搜索。嵌套网络:弹性属性的术语过滤器

  26. 26

    带有搜索输入的jQuery Json过滤器,无需使用任何过滤器插件

  27. 27

    在带有Cards的RecyclerView上添加搜索过滤器?

  28. 28

    带有搜索过滤器的角度自动完成

  29. 29

    带有替换和搜索功能的熊猫过滤器

热门标签

归档