当前位置: 首页 > 知识库问答 >
问题:

如何使用php客户端创建elasticsearch bool查询?

孟品
2023-03-14

查询返回此错误。

Elasticsearch\Common\Exceptions\BadRequest est400Exception:{"error":{"root_cause":[{"type":"parsing_exception","原因":"未知查询[查询]","line": 1,"coll": 62}],"type":"x_content_parse_exception","原因":"[1:62][bool]无法解析字段[应该]","caused_by":{"type":"parsing_exception","原因":"未知查询[查询]","line": 1,"coll": 62,"caused_by":{"type":"named_object_not_found_exception","原因":"[1:62]未知字段[查询]"}}},"状态": 400}in

我怎么能写这个查询?。在数组中,第一个是(manufacturer_code, ean)父对象,其他对象是嵌套的。

$query = [
            'bool' => [
                'should' => [
                    ['query' => [   //parent root
                        'query_string' => [
                            'fields' => ['manufacturer_code', 'ean'],
                            'query'  =>  $search,
                        ],
                    ],
                    ],

                    ['nested' => [   //nested parent.lang
                        'path'  => 'lang',
                        'query' => [
                            'query_string' => [
                                'fields' => 'lang.name',
                                'query'         =>  $search ,
                            ],
                        ],
                    ]],
                    ['nested' => [  //nested parent.product_base.lang
                        'path'  => 'product_base.lang',
                        'query' => [
                            'query_string' => [
                                'fields' => 'product_base.lang.meta_keywords',
                                'query'         =>  $search ,
                            ],
                        ],
                    ]],
                ],
                'minimum_should_match' => 1,
            ],

        ];

共有1个答案

卫阳曜
2023-03-14

就快到了,在第一个should子句中,您需要删除第一个query,即query\u字符串应该位于顶层

$query = [
            'bool' => [
                'should' => [
                    ['query_string' => [ //parent root     <-- modify this clause
                            'fields' => ['manufacturer_code', 'ean'],
                            'query'  =>  $search,
                        ],
                    ],

                    ['nested' => [   //nested parent.lang
                        'path'  => 'lang',
                        'query' => [
                            'query_string' => [
                                'fields' => 'lang.name',
                                'query'         =>  $search ,
                            ],
                        ],
                    ]],
                    ['nested' => [  //nested parent.product_base.lang
                        'path'  => 'product_base.lang',
                        'query' => [
                            'query_string' => [
                                'fields' => 'product_base.lang.meta_keywords',
                                'query'         =>  $search ,
                            ],
                        ],
                    ]],
                ],
                'minimum_should_match' => 1,
            ],

        ];
 类似资料:
  • 如何转换react查询以适应自定义类型?? 注意:我在前端使用的是JavaScipt,而不是Typescript

  • 问题内容: 我有一个node.js Connect服务器,用于检查请求的Cookie。为了在节点中测试它,我需要一种写客户端请求并将cookie附加到它的方法。我知道HTTP请求对此具有’cookie’标头,但是我不确定如何设置和发送它- 我还需要在同一请求中发送POST数据,因此我目前正在使用danwrong的restler模块,但似乎没有让我添加该标头。 关于如何使用硬编码的cookie和PO

  • 创建客户端有两种方式,一种是直接使用特化的构造器函数,另一种是使用工厂构造器函数。 第一种方式返回的是具体的客户端结构体指针对象,第二种方式返回的是客户端接口对象。 使用特化的构造器函数创建客户端 特化的构造器函数有下面几个: func NewHTTPClient(uri ...string) (client *HTTPClient) func NewTCPClient(uri ...string

  • 轻推支持在电脑端和手机端创建轻应用,创建完成后待管理员审核通过后即创建成功,但仍需登录电脑端轻推进入企业管理设置轻应用。 1. 手机端 轻应用-添加-新建-设置轻应用头像-输入轻应用名称-选择所属企业-提交申请 2.电脑端 电脑端操作与手机端相同。

  • 问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)

  • 我使用python客户端通过SQL创建表,如文档(https://cloud.google.com/bigquery/docs/tables)中所述: 除了用于通过SQL查询创建表的客户机函数使用了一个job_config对象,而job_config接收的是一个table_ref,而不是table对象之外,这种方法工作得很好。 我在这里找到了用于创建表的文档,其描述如下:https://googl