繁体   English   中英

用PHP查询Elasticsearch

[英]Querying Elasticsearch with PHP

将用于Elasticsearch的某些查询转换为PHP可读查询时遇到了一些麻烦。

例如,以下简单查询有效:

$query = $elastic->search([
body' => [
    'query' => [
        'match' => [
            'myfield' => 'mymatchingresult'
        ]
    ]
]
]);

但是,我要努力工作的是以下内容。 没有错误,只是没有运行。 我一定不了解结构。 如果将类似的查询放入Google扩展名之类的查询中,它似乎可以工作。 (将php'=>'转换为':'等)

$query = $elastic->search([
'body' => [
    'query' => [
        'filtered' => [
            'query' => [
                'query_string' => [
                    'query' => '*',
                    'analyze_wildcard' => 'true'
                ]
            ],
            'filter' => [
                'bool' => [
                    'must' => [ 
                        'query' => [
                            'query_string' => [
                                'analyze_wildcard' => 'true',
                                'query' => 'cn:name'
                            ]
                        ],
                        'range' => [
                            '@timestamp' => [
                                'from' => '2012-05-01',
                                'to' => '2016-05-01'
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
]
]);

感谢您的帮助! -约翰

据我所知, bool/must过滤器中的约束必须放在方括号中,即bool/must应该是纯数组,而不是关联数组。

像这样:

$query = $elastic->search([
'body' => [
    'query' => [
        'filtered' => [
            'query' => [
                'query_string' => [
                    'query' => '*',
                    'analyze_wildcard' => 'true'
                ]
            ],
            'filter' => [
                'bool' => [
                    'must' => [ 
                      [
                        'query' => [
                            'query_string' => [
                                'analyze_wildcard' => 'true',
                                'query' => 'cn:name'
                            ]
                        ]
                      ],
                      [
                        'range' => [
                            '@timestamp' => [
                                'from' => '2012-05-01',
                                'to' => '2016-05-01'
                            ]
                        ]
                      ]
                    ]
                ]
            ]
        ]
    ]
]
]);

暂无
暂无

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

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