簡體   English   中英

ElasticSearch-如何從非空值的彈性搜索中返回數據?

[英]ElasticSearch - How to return data from elastic search with not empty value?

我在從其中一個索引的文檔中消除空值時遇到問題。

$params = [ 
    "scroll" => "30s", // how long between scroll requests. should be small!
    "size" => 1, 
    "index" => $eddIndex,
    'type' => $eddIndexType
 ];
 $response = $client->search ( $params );

 while ( isset ( $response ['hits']['hits'] ) && count ( $response['hits']['hits'] ) > 0 ) {
 $scroll_id = $response ['_scroll_id'];
 $response = $client->scroll ( [ 
        "scroll_id" => $scroll_id,
        "scroll" => "30s" 
] )
;

這將返回

 Array
(
[_scroll_id] => cXVlcnlUaGVuRmV0Y2g7NTs0NTY0NDM6di1Bd2x4X0ZSaTJ5cnpVUkFHb3FRdzs0NTY0NDQ6di1Bd2x4X0ZSaTJ5cnpVUkFHb3FRdzs0NTY0NDY6di1Bd2x4X0ZSaTJ5cnpVUkFHb3FRdzs0NTY0NDc6di1Bd2x4X0ZSaTJ5cnpVUkFHb3FRdzs0NTY0NDU6di1Bd2x4X0ZSaTJ5cnpVUkFHb3FRdzswOw==
[took] => 12
[timed_out] => 
[_shards] => Array
    (
        [total] => 5
        [successful] => 5
        [failed] => 0
    )

[hits] => Array
    (
        [total] => 378887
        [max_score] => 1
        [hits] => Array
            (
                [0] => Array
                    (
                        [_index] => index
                        [_type] => edd
                        [_id] => 13038
                        [_score] => 1
                        [_source] => Array
                            (
                                [reason] => 
                                [booking_date] => 2013-05-03T18:30:00.000Z
                                [booking_location] => ABC
                                [scan_edd] => 
                                [call_status] => Call
                                [patient_name] => ABCD
                                [@version] => 1
                                [effective_edd] => 
                                [id] => 13038
                                [email] => xxxxxxxxx@gmail.com
                                [last_known_edd] => 
                                [booking_amount] => 8000
                                [address] => xxxxxxxxxxxxxxxxx
                                [eda] => 2013-09-09T18:30:00.000Z
                                [edd] => 
                                [mpi] => xxxxxxx
                                [mobile] => xxxxxxx
                                [statuss] => Open Payment
                                [tags] => Array
                                    (
                                        [0] => edd
                                    )

                                [last_consult_by] => Dr. XXXX                                    [site] => BLR
                                [@timestamp] => 2018-07-06T06:30:39.040Z
                                [patient_id] => 75220
                                [last_consult_on] => 2014-02-28T18:30:00.000Z
                                [ip_booking] => XYX Package
                                [is_converted] => 0
                            )

                    )

            )

    )

 )

如果查看我的輸出,則有一個[effective_edd]字段為空。

我想返回[effective_edd]不為空的數據。

我指的是以下文件https://packagist.org/packages/elasticsearch/elasticsearch

您需要向滾動請求中添加一個查詢,以檢查是否存在該字段

$params = [ 
    "scroll" => "30s", // how long between scroll requests. should be small!
    "size" => 1, 
    "index" => $eddIndex,
    'type' => $eddIndexType,
    'body' => [
        'query' => [
            'exists' => [
                'field' => 'effective_edd'
            ]
        ]
    ]
];

暫無
暫無

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

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