百億級數(shù)據(jù)搜索引擎,Elasticsearch腳本與插件

Elasticsearch表達式

使用腳本,可以在Elasticsearch中評估自定義表達式蒋腮。
例如可以使用腳本來返回“腳本字段”作為搜索請求的一部分池摧,或評估查詢的自定義分數(shù)作彤。
“painless”為默認的腳本語言宦棺。painless代咸、expression為Elasticsearch內(nèi)置支持呐芥。
在Elasticsearch API中使用腳本都遵循相同的格式:

"script": {
    # 指定腳本表達式的語言
    "lang": "painless|expression|groovy|javascript|mustach|python|java",
    # 加載腳本的方式:source源碼思瘟,id已經(jīng)存在的腳本,file存儲在文件中的腳本
    "source" | "id" | "file": ".....",
    "params": { ..... }
}

painless和expression是默認內(nèi)置的腳本表達式够话。painless是默認的腳本語言女嘲。查詢示例:

curl -XGET localhost:9200/shakespeare/_search?pretty -d'
{
    "script_fields": {
       "my_field": {
          "script": {
             "lang": "painless",
             "source": "doc.line_id.value * params.value",
             "params": {
                 "value": 2
             }
          }
       }
   }
}'
已存儲的腳本

使用_scripts RestAPI將腳本存儲在集群中或者使用已經(jīng)存儲在集群中的腳本欣尼。

創(chuàng)建存儲腳本
$ curl -XPOST localhost:9200/_scripts/my_score?pretty -d'
{
  "script": {
     "lang": "painless",
     "source": "doc.line_id.value * params.value"
  }
}'

$ curl -XGET localhost:9200/_scripts/my_score?pretty

$ curl -XGET localhost:9200/shakespeare/_search?pretty -d'
{
   "script_fields": {
      "my_field": {
         "script": {
            "id": "my_score",
            "params": {
           "value": 2
        }
         }
      }
   }
}'
刪除存儲腳本
$ curl -XDELETE localhost:9200/_scripts/calculate-score?pretty
  • 默認情況下,所有腳本都是被緩存的菇晃,因此僅在更新時才需要重新編譯它們磺送,它沒有過期時間。script.cache.expire
  • 默認情況下,腳本沒有超時期限甲捏,但是可以使用 script.cache.expire 設置更改此行為
  • 默認情況下司顿,腳本緩存大小為100大溜∏辗埽可以使用 script.cache.max_size 設置配置此緩存的大小付材。
腳本引擎

ScriptEngine是用于實現(xiàn)腳本語言的后端厌衔。它也可以用于編寫需要使用腳本內(nèi)部高級功能的腳本捍岳。例如锣夹,一個腳本希望在評分時使用詞頻晕城。需要實現(xiàn)ScriptEngine砖顷,同時應實現(xiàn)ScriptPlugin接口并覆蓋getScriptEngine方法滤蝠。

Elasticsearch插件

Elastic SQL插件

Elasticsearch SQL是一個X-Pack組件物咳,它允許針對Elasticsearch實時執(zhí)行類似SQL的查詢。無論使用REST接口,命令行還是JDBC芯肤,任何客戶端都可以使用SQ搜索或聚合數(shù)據(jù)巷折。可以將Elasticsearch SQL看作是一種翻譯器崖咨,它可以將SQL解釋成Elasticsearch可以理解的查詢語言锻拘,并利用Elasticsearch完成大規(guī)模讀取和處理數(shù)據(jù)。

安裝插件
$ ./elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.6.16.0/elasticsearch-sql-5.6.16.0.zip
使用插件

6.2及以上版本击蹲,Elastic SQL被集成到X-Pack中署拟。

$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/_sql -d'
{
   "query":"select * from shakespeare"
}'

6.2以下歌豺,Elastic SQL需要單獨安裝推穷。

$ curl -XGET -u elastic:abcd_123 localhost:9200/_sql \
    -H'Content-Type:application/json' -d'select * from shakespeare'
    
$ curl -XGET -u elastic:abcd_123 localhost:9200/_sql/_explain \
    -H'Content-Type:application/json' -d'select * from shakespeare'
X-Pack插件

X-Pack是一個Elastic Stack擴展,將安全性类咧,警報馒铃,監(jiān)控,報告轮听,機器學習和圖形功能捆綁到一個易于安裝的軟件包中骗露。要使用X-Pack,必須在Elasticsearch中安裝與Elasticsearch版本相匹配的X-Pack血巍。如果在群集上首次安裝X-Pack萧锉,則必須執(zhí)行完整群集重新啟動。安裝X-Pack后述寡,必須在群集中的所有節(jié)點上啟用安全性和安全性才能使群集正常運行。

在線安裝
$ ./elasticsearh-plugin install x-pack
離線安裝
# 下載離線安裝包
$ wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.6.16.zip

# 安裝離線安裝包
$ ./elasticsearh-plugin install file:///path/to/x-pack-5.6.16.zip

Elasticsearch鲫凶,Kibana和Logstash的X-Pack插件包含在同一zip文件中禀崖。如果已經(jīng)下載該文件,想在其他產(chǎn)品上安裝X-Pack螟炫,可以重復使用該文件波附。

配置插件
1. 安全設置

配置xpack.security可以進行啟用匿名訪問和執(zhí)行查詢的身份驗證,設置文檔和字段級安全性昼钻,配置領域以及使用SSL加密通信等設置掸屡。

屬性 作用描述
xpack.security.enabled 設置為true(默認值)在節(jié)點上啟用X-Pack安全設置
xpack.security.authc.accept_default_password 設置為false可禁用對默認密碼“ changeme”的支持
xpack.security.authc.anonymous.username 匿名用戶的用戶名。默認為_es_anonymous_user
xpack.security.authc.anonymous.roles 與匿名用戶關聯(lián)的角色然评。必須
xpack.security.authc.anonymous.authz_exception 設置為true仅财,如果匿名用戶沒有適當權限返回HTTP 403。設置為false時碗淌,將返回HTTP 401盏求。默認為true
xpack.security.dls_fls.enabled 設置為false表示阻止文檔和字段級別的訪問控制抖锥。默認是true
xpack.security.authc.token.enabled 設置為false表示禁用token服務。默認true
xpack.security.authc.token.passphrase 每個節(jié)點上必須相同且長度超過8個字符的密碼短語碎罚。該密碼短語用于導出加密密鑰磅废,使用該密鑰將對令牌進行加密和認證
xpack.security.authc.token.timeout 令牌有效的時間。默認值為20m荆烈。最大值為1小時
2.審核設置
屬性 作用描述
xpack.security.audit.enabled 設置為true在節(jié)點上啟用審核还蹲。默認值為false
xpack.security.audit.outputs 指定輸出審核日志的位置。例如:[索引耙考,日志文件]。缺省值為logfile潭兽,審核事件會放入節(jié)點上專用的<clustername> _access.log文件中
xpack.security.audit.logfile.events.include 指定要包含在審核輸出中的事件倦始。默認值為:access_denied,access_granted山卦,anonymous_access_denied鞋邑,authentication_failed,connection_denied账蓉,tampered_request枚碗,run_as_denied,run_as_granted
xpack.security.audit.logfile.events.exclude 從輸出中排除指定的事件铸本。默認不排除任何事件
xpack.security.audit.logfile.events.emit_request_body 是否在某些事件類型上(如authentication_failed)包括REST請求的Body肮雨。默認值為false
xpack.security.audit.index.bulk_size 將多個審核事件分配到一個寫入中。默認值為1000
xpack.security.audit.index.flush_interval 被緩沖的事件刷新到索引的頻率箱玷。默認值為1s
xpack.security.audit.index.rollover 控制滾動索引的頻率:小時怨规,天,周或月锡足。默認值為日
xpack.security.audit.index.events.include 指定要增加索引的審計事件波丰。默認值是anonymous_access_denied,authentication_failed舶得,realm_authentication_failed掰烟,access_granted,access_denied沐批,tampered_request纫骑,connection_granted,connection_denied珠插,run_as_granted惧磺,run_as_denied
xpack.security.audit.index.events.exclude 從索引中排除指定的審核事件。默認不排除任何事件
xpack.security.audit.index.events.emit_request_body 是否在某些事件類型上(如authentication_failed)包括REST請求的主體捻撑。默認值為false磨隘。
xpack.security.audit.index.settings 用于存儲事件的索引的設置缤底。如:將審計索引的分片和副本數(shù)設置為1。
3.監(jiān)控設置

默認情況下番捂,X-Pack監(jiān)控被啟用个唧,但是數(shù)據(jù)收集被禁用,高級監(jiān)控設置使你能夠控制收集數(shù)據(jù)的頻率设预、配置超時以及為本地存儲的監(jiān)控索引設置保留期徙歼,還可以調(diào)整監(jiān)控數(shù)據(jù)的顯示方式。

屬性 作用描述
xpack.monitoring.enabled 設置為false可禁用Elasticsearch對節(jié)點上的監(jiān)控
xpack.monitoring.collection.cluster.state.timeout 收集集群狀態(tài)的超時時間鳖枕。默認為10秒
xpack.monitoring.collection.cluster.stats.timeout 收集集群統(tǒng)計信息的超時時間魄梯。默認為10秒。
xpack.monitoring.collection.indices 設定監(jiān)控從哪個索引收集數(shù)據(jù)宾符。默認為所有索引酿秸。多個索引以逗號分隔,如:test1魏烫,test2辣苏,test3;可以使用通配符哄褒,如:test 稀蟋;可以在索引名前面加上+表示包括某個索引,或在索引名之前加上-表示排除某個索引呐赡,如:+test退客,-test3。
xpack.monitoring.collection.index.stats.timeout 收集索引統(tǒng)計信息的超時時間链嘀。默認為10秒井辜。
xpack.monitoring.collection.index.recovery.active_only 控制是否收集所有恢復。設置為true僅收集活動的恢復管闷。默認為false粥脚。
xpack.monitoring.collection.index.recovery.timeout 收集恢復信息的超時時間。默認為10秒包个。
xpack.monitoring.collection.interval 控制收集數(shù)據(jù)的頻率刷允。默認為10秒。如果修改收集間隔碧囊,也需要將kibana.yml中的xpack.monitoring.min_interval_seconds選項設為相同的值树灶。設置為-1可暫時禁用數(shù)據(jù)收集。
xpack.monitoring.history.duration 收集的數(shù)據(jù)保留期限糯而,超過該期限將自動刪除天通。默認為7天。
xpack.monitoring.exporters
配置存儲監(jiān)視數(shù)據(jù)的代理熄驼。默認情況下像寒,代理使用本地導出程序烘豹,該導出程序在本地群集上的建立數(shù)據(jù)索引。使用HTTP導出器將數(shù)據(jù)發(fā)送到單獨的監(jiān)視集群诺祸。
使用插件

安裝X-Pack后携悯,插件提供了三個默認賬戶:

  • elastic/changeme
  • kibana/changeme
  • logstash/changeme
$ curl -XGET -u elastic:changeme localhost:9200/_xpack/license?pretty
$ curl -XGET -u kibana:changeme localhost:9200/_xpack/license?pretty
$ curl -XGET -u logstash_system:changeme localhost:9200/_xpack/license?pretty
用戶管理
# 創(chuàng)建用戶
$ curl -XPOST -u elastic:abcd_123 localhost:9200/_xpack/security/user/yunxi -d'
{
   "password": "abcd_123",
   "roles": ["admin", "other_role1"],
   "full_name": "yunxi",
   "email": "abcd_123@test.com"
}'

# 查看用戶 
$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/user?pretty

# 禁用用戶
$ curl -XPOST -u elastic:abcd_123 localhost:9200/_xpack/security/user/yunxi/_disabled

# 啟用用戶
$ curl -XPOST -u elastic:abcd_123 localhost:9200/_xpack/security/user/yunxi/_enabled

# 刪除用戶
$ curl -XDELETE -u elastic:abcd_123 localhost:9200/_xpack/security/user/yunxi
  • password 用戶密碼,最少6個字符筷笨。必填憔鬼。
  • roles 用戶所屬的一組角色。必填胃夏。
  • full_name
  • email
  • metadata 用戶元數(shù)據(jù)轴或。
角色管理

使用角色映射API,可以添加仰禀,刪除和檢索角色映射侮叮。要使用此API,必須至少擁有manage_security權限悼瘾。

# 創(chuàng)建角色
$ curl -XPOST -u elastic:changeme localhost:9200/_xpack/security/role/my_role -d'
{
  "cluster": ["all"],
  "indices": [{
      "names": [ "news", "blog" ],
      "privileges": ["all"],
      "field_security" : {
        "grant" : [ "title", "body" ]
      },
      "query": "{\"match\": {\"title\": \"foo\"} }"
  }],
  "run_as": [ "other_user" ],
  "metadata" : { 
    "version" : 1
  }
}'
# 查看角色
$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/role?pretty
$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/role/my_role,ingest_admin?pretty
$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/role?pretty
權限管理

has_privileges可以確定登錄的用戶具有的特權列表。所有用戶都可以使用此API审胸,但只能查看自己的特權亥宿。

curl -XPOST -u elastic:abcd_123 localhost:9200/_xpack/security/role_mapping/administrator -d '
{
   "roles": ["user", "admin"],
   "enabled": true,
   "rules": {
      "field": { "username": ["admin01", "admin02"] }
   }
}'

$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/role_mapping/administrator?pretty

$ curl -XGET -u elastic:abcd_123 localhost:9200/_xpack/security/role_mapping?pretty
集群權限
屬性 作用描述
all 所有集群管理操作,如快照砂沛,節(jié)點關閉/重新啟動烫扼,設置更新,重新路由或管理用戶和角色
monitor 所有集群只讀操作碍庵,如集群運行狀況映企,熱線程,節(jié)點信息静浴,節(jié)點和集群統(tǒng)計信息堰氓,快照/恢復狀態(tài),等待集群任務
monitor_ml 所有只讀機器學習操作苹享,例如獲取有關數(shù)據(jù)傳輸双絮,作業(yè),模型快照或結果的信息
monitor_watcher 所有只讀操作得问,例如獲取watch和watcher統(tǒng)計信息
manage 構建monitor并添加更改集群中值的集群操作囤攀。這包括快照,更新設置和重新路由宫纬。此特權不包括管理安全性的能力
manage_index_templates 索引模板上的所有操作
manage_ml 所有機器學習操作焚挠,例如創(chuàng)建和刪除數(shù)據(jù)傳輸,作業(yè)和模型快照漓骚。數(shù)據(jù)處理以具有提升特權的系統(tǒng)用戶身份運行蝌衔,包括讀取所有索引的權限
manage_pipeline 攝取管道的所有操作
manage_security 所有與安全相關的操作榛泛,例如對用戶和角色的CRUD操作以及緩存清除
manage_watcher 所有觀察者操作,例如放置watches胚委,執(zhí)行挟鸠,激活或確認。Watches作為具有提升特權的系統(tǒng)用戶運行亩冬,包括讀取和寫入所有索引的權限艘希。Watches作為具有提升特權的系統(tǒng)用戶運行,包括讀取和寫入所有索引的權限
transport_client
傳輸客戶端連接所需的所有權限硅急。遠程群集需要啟用跨級群搜索
索引權限
屬性 作用描述
all 索引上的所有操作
monitor 監(jiān)控所有操作(恢復覆享,細分信息,索引統(tǒng)計信息和狀態(tài))
manage 所有monitor權限加索引管理(別名营袜,分析撒顿,緩存清除,關閉荚板,刪除凤壁,存在,刷新跪另,映射拧抖,打開,強制合并免绿,刷新唧席,設置,搜索分片嘲驾,模板淌哟,驗證)
view_index_metadata 對索引元數(shù)據(jù)(別名,別名存在辽故,獲取索引徒仓,存在,字段映射誊垢,映射蓬衡,搜索分片,類型存在彤枢,驗證狰晚,warmers,設置)進行只讀訪問缴啡。此權限主要供Kibana用戶使用
read 只讀操作(計數(shù)壁晒,解釋,獲取业栅,mget秒咐,獲取索引腳本谬晕,更多像這樣,多滲透/搜索/ termvector携取,滲透攒钳,滾動,clear_scroll雷滋,搜索不撑,建議,tv)
read_cross_cluster 對來自遠程集群的搜索操作提供只讀訪問
index 索引和更新文件晤斩。還授予對更新映射操作的訪問權限
create 索引文件焕檬。還授予對更新映射操作的訪問權限
delete 刪除文件
write 對文檔執(zhí)行所有寫入操作的權限,包括索引澳泵,更新和刪除文檔以及執(zhí)行批量操作的權限实愚。還授予對更新映射操作的訪問權限
delete_index 刪除索引
create_index 創(chuàng)建索引。創(chuàng)建索引請求可能包含在創(chuàng)建索引時添加到索引的別名兔辅。在這種情況下腊敲,該請求最好有manage權限,同時設置索引和別名
字段和文檔級安全

可以通過向角色添加字段和文檔級別的安全權限來控制對索引內(nèi)數(shù)據(jù)的訪問维苔。字段級別的安全權限將限制對文檔中特定字段的訪問碰辅。文檔級安全權限限制了對索引中特定文檔的訪問。角色可以基于每個索引的字段和文檔級別設定權限蕉鸳,未指定字段級別權限的角色將授予對所有字段的訪問權限。同樣忍法,不指定文檔級別權限的角色將授予對索引中所有文檔的訪問權限潮尝。

"indices": [{
      "names": [ "news-*" ],
      "privileges": [ "read" ],
      "field_security" : {
        "grant" : [ "title", "@timestamp", "body" ]
      }
  }]

"indices": [{
      "names": [ "*" ],
      "privileges": [ "read" ],
      "field_security" : {
        "grant" : [ "title-*" ]
      }
  }]
  
  
  "indices": [{
      "names": [ "*" ],
      "privileges": [ "read" ],
      "field_security" : {
        "grant" : [ "*" ],
        "except": [ "news.*" ]
      }
  }]
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饿序,一起剝皮案震驚了整個濱河市勉失,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌原探,老刑警劉巖乱凿,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咽弦,居然都是意外死亡徒蟆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門型型,熙熙樓的掌柜王于貴愁眉苦臉地迎上來段审,“玉大人,你說我怎么就攤上這事闹蒜∷峦鳎” “怎么了抑淫?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姥闪。 經(jīng)常有香客問我始苇,道長,這世上最難降的妖魔是什么筐喳? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任催式,我火速辦了婚禮,結果婚禮上疏唾,老公的妹妹穿的比我還像新娘蓄氧。我一直安慰自己,他們只是感情好槐脏,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布喉童。 她就那樣靜靜地躺著,像睡著了一般顿天。 火紅的嫁衣襯著肌膚如雪堂氯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天牌废,我揣著相機與錄音咽白,去河邊找鬼。 笑死鸟缕,一個胖子當著我的面吹牛晶框,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播懂从,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼授段,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了番甩?” 一聲冷哼從身側響起侵贵,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缘薛,沒想到半個月后窍育,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宴胧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年漱抓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恕齐。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡辽旋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情补胚,我是刑警寧澤码耐,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站溶其,受9級特大地震影響骚腥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓶逃,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一束铭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厢绝,春花似錦契沫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至靶病,卻和暖如春会通,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背娄周。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工涕侈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人煤辨。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓裳涛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親众辨。 傳聞我的和親對象是個殘疾皇子端三,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容