<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 腳本相關改變 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_scripting.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_scripting.html) 譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260829](http://www.apache.wiki/pages/viewpage.action?pageId=4260829) 貢獻者 : [片刻](/display/~jiangzhonglian) ## 切換默認語言從Groovy到Painless Elasticsearch的默認腳本語言現在是Painless。 Painless是一種定制語言,語法類似于Groovy,旨在快速和安全。 許多Groovy腳本將與Painless腳本相同,以幫助使語言之間的過渡盡可能簡單。 Painless的文檔可以在[無腳本語言](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-scripting-painless.html)中找到 Groovy和Painless之間的一個常見區別是使用參數 - Painless中的所有參數都必須以params為前綴。 現在。 以下示例顯示了區別: ``` { "script_score": { "script": { "lang": "groovy", "inline": "Math.log(_score * 2) + my_modifier", "params": { "my_modifier": 8 } } } } ``` Painless(my_modifer的前綴為params): ``` { "script_score": { "script": { "lang": "painless", "inline": "Math.log(_score * 2) + params.my_modifier", "params": { "my_modifier": 8 } } } } ``` script.default_lang設置已刪除。 不再可能設置默認腳本語言。 如果使用不同于無痛的語言,那么應該在腳本本身上明確指定。 對于沒有定義明確語言的腳本,它們是已存儲的滲透查詢的一部分,可以使用script.legacy.default_lang設置來控制默認語言。 ## 刪除1.x腳本和模板語法 定義內聯腳本/模板和引用文件或索引基礎腳本/模板的已棄用的1.x語法已刪除。 不能再使用腳本和params字符串參數,而必須使用腳本對象語法。 這適用于更新api,腳本排序,script_score函數,腳本查詢,scripted_metric聚合和script_heuristic聚集。 因此,不再允許使用內聯腳本: ``` { "script_score": { "lang": "groovy", "script": "Math.log(_score * 2) + my_modifier", "params": { "my_modifier": 8 } } } ``` 并且必須使用此語法: ``` { "script_score": { "script": { "lang": "groovy", "inline": "Math.log(_score * 2) + my_modifier", "params": { "my_modifier": 8 } } } } ``` 腳本或script_file參數不能再用于引用基于文件的腳本和模板,而必須使用文件。 引用基于文件的腳本的此用法不再有效: ``` { "script_score": { "script": "calculate-score", "params": { "my_modifier": 8 } } } ``` 此用法有效: ``` { "script_score": { "script": { "lang": "groovy", "file": "calculate-score", "params": { "my_modifier": 8 } } } } ``` script_id參數不能再使用,請參考基于索引的腳本和模板,而必須使用id。 引用索引腳本的此用法不再有效: ``` { "script_score": { "script_id": "indexedCalculateScore", "params": { "my_modifier": 8 } } } ``` 此用法有效: ``` { "script_score": { "script": { "id": "indexedCalculateScore", "lang" : "groovy", "params": { "my_modifier": 8 } } } } ``` ## 模板查詢 模板查詢中的查詢字段不能再使用。 此1.x語法不能再使用: ``` { "query": { "template": { "query": {"match_{{template}}": {}}, "params" : { "template" : "all" } } } } ``` 而應使用以下語法: ``` { "query": { "template": { "inline": {"match_{{template}}": {}}, "params" : { "template" : "all" } } } } ``` ## 搜索模板 搜索模板API中的頂級模板字段已替換為一致的模板/腳本對象語法。 此1.x語法不能再使用: ``` { "template" : { "query": { "match" : { "{{my_field}}" : "{{my_value}}" } }, "size" : "{{my_size}}" }, "params" : { "my_field" : "foo", "my_value" : "bar", "my_size" : 5 } } ``` 而應使用以下語法: ``` { "inline" : { "query": { "match" : { "{{my_field}}" : "{{my_value}}" } }, "size" : "{{my_size}}" }, "params" : { "my_field" : "foo", "my_value" : "bar", "my_size" : 5 } } ``` ## 索引的腳本和模板 索引腳本和模板已由[存儲腳本](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-scripting-using.html#modules-scripting-stored-scripts)替換,這些腳本將腳本和模板存儲在集群狀態中,而不是專用的.scripts索引。 對于存儲的腳本的大小,存在65535個字節的軟限制。如果腳本超過該大小,則可以將script.max_size_in_bytes設置添加到elasticsearch.yml以將軟限制更改為更高的值。如果腳本真的很大,應考慮其他選項,如本地腳本。 .scripts索引中以前建立索引的腳本將不再使用,因為Elasticsearch現在將嘗試從群集狀態獲取腳本。升級到5.x后,.scripts索引將保持存在,因此腳本可以使用它來將存儲的腳本從.scripts索引遷移到群集狀態。腳本和模板的當前格式尚未更改,僅刪除1.x格式。 ### Python遷移腳本 可以使用以下Python腳本將索引腳本作為存儲腳本導入到集群狀態: ``` from elasticsearch import Elasticsearch,helpers es = Elasticsearch([ {'host': 'localhost'} ]) for doc in helpers.scan(es, index=".scripts", preserve_order=True): es.put_script(lang=doc['_type'], id=doc['_id'], body=doc['_source']) ``` 此腳本使用官方Elasticsearch Python客戶端,因此您需要確保您已在您的環境中安裝了客戶端。 有關這方面的更多信息,請參閱elasticsearch-py。 ### Perl遷移腳本 以下Perl腳本可用于將索引腳本作為存儲腳本導入到集群狀態: ``` use Search::Elasticsearch; my $es = Search::Elasticsearch->new( nodes => 'localhost:9200'); my $scroll = $es->scroll_helper( index => '.scripts', sort => '_doc'); while (my $doc = $scroll->next) { $e->put_script( lang => $doc->{_type}, id => $doc->{_id}, body => $doc->{_source} ); } ``` 此腳本使用官方Elasticsearch Perl客戶端,因此您需要確保您已在您的環境中安裝了客戶端。有關這方面的更多信息,請參閱Search :: Elasticsearch。 ### 驗證腳本遷移 在您通過提供的腳本或其他腳本移動腳本后,您可以驗證與以下請求如果遷移成功發生: ``` GET _cluster/state?filter_path=metadata.stored_scripts ``` 響應應包括.scripts索引中的所有腳本。在驗證所有腳本都已移動后,可以選擇作為最后一步,您可以刪除.scripts索引,因為Elasticsearch不再使用它。 ## 索引腳本Java API 與索引腳本交互相關的所有方法都已刪除。已在ClusterAdminClient類下添加了用于與存儲的腳本進行交互的Java API方法。以前存在于索引腳本API方法上的糖方法不存在于存儲腳本的方法上。提供腳本的唯一方法是使用BytesReference實現,如果需要提供字符串,則應該使用BytesArray類。 ## 腳本引擎現在只注冊一種語言 在5.0.0之前,腳本引擎可以注冊多種語言。 Javascript腳本引擎特別注冊了“lang”:“js”和“lang”:“javascript”。腳本引擎現在只能注冊單一語言。對于lang-javascript插件的現有用戶,所有對“lang”:“js”的引用應更改為“lang”:“javascript”。 ## 腳本引擎現在只注冊一個擴展 在5.0.0腳本引擎之前可以注冊多個擴展。唯一的引擎是Javascript引擎,它注冊了“js”和“javascript”。它現在只注冊磁盤腳本的“js”文件擴展名。 ## .javascript文件不再受支持(使用.js) Javascript引擎以前注冊過“js”和“javascript”。它現在只注冊磁盤腳本的“js”文件擴展名。 ## 從update rest apiedit中刪除腳本查詢字符串參數 已從更新api中刪除腳本script_id和scripting_upsert查詢字符串參數。 ## Java傳輸客戶端 TemplateQueryBuilder已移至lang-mustache模塊。因此,當使用來自Java本機客戶端的TemplateQueryBuilder時,lang-mustache模塊應該在類路徑上。此外,傳輸客戶端應該將lang-mustache模塊作為插件加載: ``` TransportClient transportClient = TransportClient.builder() .settings(Settings.builder().put("node.name", "node")) .addPlugin(MustachePlugin.class) .build(); transportClient.addTransportAddress( new InetSocketTransportAddress(new InetSocketAddress(InetAddresses.forString("127.0.0.1"), 9300)) ); ``` 此外,創建TemplateQueryBuilder實例的QueryBuilders類中的幫助方法已被刪除,而應使用TemplateQueryBuilder上的構造方法。 ## 模板查詢 模板查詢已被棄用,支持搜索模板api。模板查詢計劃在下一個主版本中刪除。 ## GeoPoint腳本 以下助手方法已從GeoPoint腳本中刪除: * factorDistance * factorDistanceWithDefault * factorDistance02 * factorDistance13 * arcDistanceInKm * arcDistanceInKmWithDefault * arcDistanceInMiles * arcDistanceInMilesWithDefault * distanceWithDefault * distanceInKm * distanceInKmWithDefault * distanceInMiles * distanceInMilesWithDefault * geohashDistanceInKm * geohashDistanceInMiles 而是使用arcDistance,arcDistanceWithDefault,planeDistance,planeDistanceWithDefault,geohashDistance,geohashDistanceWithDefault,并使用適當的常數從默認單位(米)轉換為所需單位(例如乘以0.001來轉換為Km)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看