簡體   English   中英

查詢更新 Elasticsearch-PHP Client 2.0+

[英]Update by query Elasticsearch-PHP Client 2.0+

我正在使用Elasticsearch 2.1.1 php 客戶端進行 ES 操作。 我想通過查詢更新我的文檔。 為此,我發現updatebyquery但這不適用於2.0+ versions的 ES。 那么有什么新方法可以通過查詢更新我的文檔嗎?

我也在為updateByQuery苦苦掙扎,看看這個問題

首先,您需要編輯您的elasticsearch.yml以允許腳本。 在末尾追加以下幾行。

script.engine.groovy.inline.search: on
script.engine.groovy.inline.aggs: on
script.engine.groovy.inline.update: on

然后構造一個查詢,該查詢將更新與您的條件匹配的所有記錄。

$client = \Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
    # Request
    $updateRequest = [
        'index'     => 'testindex',
        'type'      => 'logs',
        'conflicts' => 'proceed',
        'body' => [
            'query' => [ 
                'filtered' => [
                    'filter' => [
                        'bool' =>   [
                                        'must' =>
                                        [
                                            [
                                                'match' => [ 'enabled' => 1 ],
                                            ],
                                        ]
                                    ]
                                ]
                            ]
                        ],
            'script' => [
                    'inline' => 'ctx._source.enabled = value',
                    'params' => [
                        'value' => 0
                    ]
            ]
            ]
        ]
    ];
    # Update 
    $results = $client->updateByQuery($updateRequest);

暫無
暫無

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

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