日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

painless语法入门[通俗易懂]

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 painless语法入门[通俗易懂] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,又見面了,我是你們的朋友風君子。

painless語法

painless基礎結構


  "script": { 
   
    "lang":   "...",
    "source" | "id": "...",
    "params": { 
    ... }
  }
  1. lang: 定義腳本使用的語言, 默認painless
  2. source, id: 腳本的主體, source后面跟著內聯的腳本代碼, id后面跟著腳本的id, 具體代碼存在于腳本id對應的代碼中
  3. params: 定義一些變量的值, 使用params可以減少腳本的編譯次數. 因為如果變量的值硬編碼到代碼中, 每次進行變量值得更改都會對腳本進行重新編譯. 使用params則不會重新編譯腳本.

script.context.field.max_compilations_rate=75/5m 腳本的默認編譯頻率, 定義腳本的編譯頻率為5分鐘75個, 當超過75個時會拋出circuit_breaking_exception異常.

腳本代碼的存儲

// POST _scripts/{id}
POST _scripts/calculate-score
{ 

"script": { 

"lang": "painless",
"source": "Math.log(_score * 2) + params['my_modifier']"
}
}
// 腳本使用
GET my-index-000001/_search
{ 

"query": { 

"script_score": { 

"query": { 

"match": { 

"message": "some message"
}
},
"script": { 

"id": "calculate-score", 
"params": { 

"my_modifier": 2
}
}
}
}
}

使用腳本對文檔進行更新


PUT my-index-000001/_doc/1
{ 

"counter" : 1,
"tags" : ["red"]
}
// 將count加上4
POST my-index-000001/_update/1
{ 

"script" : { 

"source": "ctx._source.counter += params.count",
"lang": "painless",
"params" : { 

"count" : 4
}
}
}
// 增加tags的元素
POST my-index-000001/_update/1
{ 

"script": { 

"source": "ctx._source.tags.add(params['tag'])",
"lang": "painless",
"params": { 

"tag": "blue"
}
}
}
// If the list contains duplicates of the tag, this script just removes one occurrence.
// 如果集合中有多個相同的值, 只刪除第一個
POST my-index-000001/_update/1
{ 

"script": { 

"source": "if (ctx._source.tags.contains(params['tag'])) { ctx._source.tags.remove(ctx._source.tags.indexOf(params['tag'])) }",
"lang": "painless",
"params": { 

"tag": "blue"
}
}
}
// 增加新的字段
POST my-index-000001/_update/1
{ 

"script" : "ctx._source.new_field = 'value_of_new_field'"
}
// 刪除字段
POST my-index-000001/_update/1
{ 

"script" : "ctx._source.remove('new_field')"
}
// 如果tags字段中包含green, 則刪除該文檔, 否則不做操作
POST my-index-000001/_update/1
{ 

"script": { 

"source": "if (ctx._source.tags.contains(params['tag'])) { ctx.op = 'delete' } else { ctx.op = 'none' }",
"lang": "painless",
"params": { 

"tag": "green"
}
}
}
// doc.containsKey('field')

腳本變量

  • ctx._source.field: add, contains, remove, indexOf, length
  • ctx.op: The operation that should be applied to the document: index or delete
  • ctx._index: Access to document metadata fields
  • _score 只在script_score中有效
  • doc[‘field’], doc[‘field’].value: add, contains, remove, indexOf, length

腳本緩存

  1. You can change this behavior by using the script.cache.expire setting. Use the script.cache.max_size setting to configure the size of the cache.The size of scripts is limited to 65,535 bytes. Set the value of script.max_size_in_bytes to increase that soft limit.
  2. Cache sizing is important. Your script cache should be large enough to hold all of the scripts that users need to be accessed concurrently.

腳本優化

  1. 使用腳本緩存, 預先緩存可以節省第一次的查詢時間
  2. 使用ingest pipeline進行預先計算
  3. 相比于_source.field_name使用doc[‘field_name’]語法速度更快, doc語法使用doc value , 列存儲

// 根據分數相加結果進行排序
GET /my_test_scores/_search
{ 

"query": { 

"term": { 

"grad_year": "2099"
}
},
"sort": [
{ 

"_script": { 

"type": "number",
"script": { 

"source": "doc['math_score'].value + doc['verbal_score'].value"
},
"order": "desc"
}
}
]
}
// 在索引中新加一個字段存儲計算結果
PUT /my_test_scores/_mapping
{ 

"properties": { 

"total_score": { 

"type": "long"
}
}
}
// 使用ingest pipeline先將計算結果作為值存儲起來
PUT _ingest/pipeline/my_test_scores_pipeline
{ 

"description": "Calculates the total test score",
"processors": [
{ 

"script": { 

"source": "ctx.total_score = (ctx.math_score + ctx.verbal_score)"
}
}
]
}
// 重新索引時使用ingest pipeline
POST /_reindex
{ 

"source": { 

"index": "my_test_scores"
},
"dest": { 

"index": "my_test_scores_2",
"pipeline": "my_test_scores_pipeline"
}
}
// 索引新文檔時使用ingest pipeline
POST /my_test_scores_2/_doc/?pipeline=my_test_scores_pipeline
{ 

"student": "kimchy",
"grad_year": "2099",
"math_score": 1200,
"verbal_score": 800
}
// 查詢
GET /my_test_scores_2/_search
{ 

"query": { 

"term": { 

"grad_year": "2099"
}
},
"sort": [
{ 

"total_score": { 

"order": "desc"
}
}
]
}
// stored field 用法
PUT my-index-000001
{ 

"mappings": { 

"properties": { 

"full_name": { 

"type": "text",
"store": true
},
"title": { 

"type": "text",
"store": true
}
}
}
}
PUT my-index-000001/_doc/1?refresh
{ 

"full_name": "Alice Ball",
"title": "Professor"
}
GET my-index-000001/_search
{ 

"script_fields": { 

"name_with_title": { 

"script": { 

"lang": "painless",
"source": "params._fields['title'].value + ' ' + params._fields['full_name'].value"
}
}
}
}

用到腳本的命令

  • function_score
  • script_score
  • aggregation
  • rescore

總結

以上是生活随笔為你收集整理的painless语法入门[通俗易懂]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美精品久久久久久久久 | 人妻在线一区二区三区 | 久久五月视频 | 香蕉a视频| 久操视频在线免费观看 | 日韩欧美精品一区二区三区 | 久久只有精品 | 色偷偷噜噜噜亚洲男人 | 国产乱子视频 | 国产人妻一区二区三区四区五区六 | 午夜xx | 精品国产伦一区二区三区免费 | 国产精品自拍网站 | 中文字幕在线有码 | 伊人精品在线视频 | 一级免费看片 | 91禁外国网站 | 女人洗澡一级特黄毛片 | 国产精品不卡一区二区三区 | 一区二区在线精品 | 国产精品二区一区二区aⅴ 一卡二卡三卡在线观看 | 欧美一区二区三区网站 | 今天最新中文字幕mv高清 | 日本激情小视频 | 中文字幕高清在线观看 | 欧美成人做爰大片免费看黄石 | 熟妇人妻一区二区三区四区 | 成人免费自拍视频 | 日韩草比 | 日韩av高清在线观看 | 亚洲国产精品国自产拍av | 日本高清网色 | 日韩免费观看一区二区 | 91美女片黄| 最近中文字幕在线观看视频 | 国产极品视频在线观看 | а√天堂www在线天堂小说 | 午夜看片在线观看 | 国产精品偷伦视频免费看 | 国家队动漫免费观看在线观看晨光 | 欧美人妻少妇一区二区三区 | 欧美看片 | 亚洲手机在线 | 美女视频黄是免费 | 草色网| 黄色一级小说 | 久久精品国产99 | 国产精品久久久久久久免费观看 | 短篇山村男同肉耽h | 亚洲第一二区 | a级片免费网站 | 亚洲欧洲日本国产 | 91精品久久香蕉国产线看观看 | 人妻饥渴偷公乱中文字幕 | 国产成人精品一区二区三区视频 | 啪视频在线 | 日韩熟妇一区二区三区 | 久久99精品波多结衣一区 | 午夜精品在线免费观看 | 夜夜嗨老熟女av一区二区三区 | 97在线视频人妻无码 | 91中出 | 美女扒开腿让男生桶 | 欧美日韩在线观看一区二区 | 97视频网站 | 午夜av网址| 麻豆网站免费看 | 神马午夜电影一区二区三区在线观看 | 午夜免费体验区 | caoporn视频在线观看 | 日韩手机在线视频 | av高清在线免费观看 | 91免费在线播放 | 日韩成人无码 | 欧美不卡高清 | 国产夫妻一区 | 欧美50p| 桥本有菜aⅴ一区二区三区 在线午夜电影 | 国产处女 | 国产日韩一区二区 | 视频一二三区 | 亚洲天堂2014 | 911国产 | 91免费视频免费版 | 中文字幕第十一页 | 免费的av | 激情福利社 | 视频一区欧美 | 婷婷激情图片 | 国产精品久久久精品三级 | 成人免费看视频 | 国产美女精品 | 永久毛片 | 一级特黄性色生活片 | 欧美在线播放视频 | 日本视频h | av美国| 欧美性生活免费视频 | 精品日韩久久 |