簡體   English   中英

ElasticSearch PHP API按字段搜索

[英]ElasticSearch PHP API Search by Field

解決

我正在嘗試使用官方的Elasticsearch 5.0 php包來獲得結果。 我可以通過URL和cURL獲得所需的結果。

http://localhost:9200/index/doctype/_search?q=status:available

正如預期的那樣,我得到了8次點擊和8次點擊結果。

 curl -XGET 'localhost:9200/index/doctype/_search?pretty' -d' { "query" : { "term" : { "status" : "available" } } }' 

正如預期的那樣,我得到了8次點擊和8次點擊結果。

使用以下各種代碼,我得到8個結果,但0次命中。

$params['body']['query']['term']['status'] = 'available';
$params['q'] = 'status:available';
$params['body'] = [
        'query' => [
            'bool' => [
                'must' => [
                    ['match' => ['status' => 'available']],
                ]
            ]
        ]
    ];

通過以下方式調用:

$params = [
            'index' => 'index',
            'type' => 'doctype',
        ];

        $skip = !empty($_GET['page']) ? (int)$_GET['page'] - 1 : 0;
        $listings_per_page = 25;
        $params['from'] = $skip * $per_page;
        $params['size'] = $per_page;

        // show only available

        $params['body'] = [
            'query' => [
                'bool' => [
                    'must' => [
                        ['match' => ['status' => 'available']],
                    ]
                ]
            ]
        ];

        $hosts = [env('ES_HOST', 'elasticsearch') . ':' . env('ES_PORT', '9200')];
        $client = ClientBuilder::create()->setHosts($hosts)->build();
        $es_results = $client->search($params);

我在$ params以及其他代碼段中正確設置了索引和doctype。 我在這里可能做錯了什么?

您的fromsize參數很可能計算不正確,並且from可能大於8,因此為什么您看到results.hits.total: 8但在results.hits.hits什么都沒有

確保from為0, size至少為8(默認值為10),您將看到匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM