Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ElasticsearchでScripting
Search
pisatoshi
April 21, 2014
Technology
8.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ElasticsearchでScripting
pisatoshi
April 21, 2014
More Decks by pisatoshi
See All by pisatoshi
Elasticsearch RerouteAPIを使ったシャード配置の制御
pisatoshi
0
6k
Elasticsearch trial and error
pisatoshi
3
4.2k
Other Decks in Technology
See All in Technology
記録をかんたんに、提案をパーソナルに ── AIであすけんが目指すもの
oprstchn
0
170
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
230
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
570
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
200
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
150
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
280
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
210
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
260
そのタスクオンスケですか?
poropinai1966
0
140
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.3k
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
220
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.1k
The Spectacular Lies of Maps
axbom
PRO
1
850
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
390
Embracing the Ebb and Flow
colly
88
5.1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
770
The Cost Of JavaScript in 2023
addyosmani
55
10k
Chasing Engaging Ingredients in Design
codingconduct
0
230
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Transcript
&MBTUJDTFBSDIͰ 4DSJQUJOH ୈճ&MBTUJDTFBSDIษڧձ !QJTBUPTIJ
ࣗݾհ ໊લୌాݾ !QJTBUPTIJ ॴଐגࣜձࣾ࢜௨ιϑτΣΞςΫϊϩδʔζ ੜଉͧ͠ʔ͔ ͓ࣄ#BB4ج൫։ൃɻݘͷࢄาɻ
4DSJQUJOH֓ཁ w ΫΤϦ࣮ߦ࣌ͷࣜධՁΛಠࣗͷϩδοΫͰΧελϚΠζͰ͖Δ ݕࡧ݁ՌͷϑΟʔϧυɾϑΟϧλϦϯά υΩϡϝϯτͷείΞ ݕࡧ݁ՌҰཡͷιʔτॱ ʜFUD w ଟ࠼ͳݴޠαϙʔτ .7&-
%FGBVMU +BWB4DSJQU 1ZUIPO (SPPWZ +BWB
େ·͔ͳྨ w %ZOBNJD4DSJQU ΫΤϦʹεΫϦϓτΛهड़ ͓खܰ w 1SFMPBEFE4DSJQU αʔόʹεΫϦϓτϑΝΠϧΛஔ &4@)0.&DPOpHTDSJQUT
Ұఆ࣌ؒຖʹϦϩʔυʢΠϯλʔόϧࢦఆՄೳʣ w /BUJWF4DSJQU +BWBͰ࣮ ࠷ $-"441"5)্ʹKBSϑΝΠϧΛஔ ىಈ࣌ʹϩʔυɺߋ৽࣌ཁ࠶ىಈ
4BNQMFT
ϑΟʔϧυͷจࣈྻஔ curl ‘http://localhost:9200/test/foo/_search?pretty' -d ' { "query" : { "match_all"
: {} }, "fields" : [ "body" ], "script_fields" : { “replaced" : { "script": "java.util.regex.Pattern.compile(\"[0-9]{2,4}-[0-9]{2,4}- [0-9]{4}\").matcher(_source.body).replaceAll(\"[ϐʔʔ]\")" } } }' ి൪߸ Β͖͠จࣈྻ ΛϚεΫͯ͠ΈΔ
ϑΟʔϧυͷจࣈྻஔ { "took" : 317, "timed_out" : false, "_shards" :
{ "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [ { "_index" : "test", "_type" : "foo", "_id" : "5y7HmrMFQFq2y81KiMKXPQ", "_score" : 1.0, "fields" : { "replaced" : [ "͜Μʹͪɻ[ϐʔʔ]ʹిͯ͠Ͷɻ" ], "body" : [ "͜Μʹͪɻ090-1234-5678ʹిͯ͠Ͷɻ" ] } } ] } } ϚεΫͯ͠Έͨ݁Ռ
ݕࡧ݁ՌͷϑΟϧλϦϯά curl -XPOST ‘http://localhost:9200/test/state/_search?pretty' -d ' { "query" : {
"filtered" : { "query" : { "match_all" : {} }, "filter" : { "script" : { "params": { "len": 10 }, "script" : "_source.name!=null && _source.name.length()>=len" } } } } }' lOBNFzϑΟʔϧυ͕ࢦఆҎ্ͷυΩϡϝϯτͷΈฦ͢
%FMFUFCZRVFSZ curl -XDELETE ‘http://localhost:9200/test/state/_query' -d ' { "query" : {
"filtered" : { "query" : { "match_all" : {} }, "filter" : { "script" : { "params": { "len": 10 }, "script" : "_source.name!=null && _source.name.length()>=len" } } } } }' %FMFUFCZRVFSZͰ͑Δ lOBNFzϑΟʔϧυ͕ࢦఆҎ্ͷυΩϡϝϯτͷΈআ
ݕࡧ݁Ռͷιʔτ curl -XPOST ‘http://localhost:9200/test/state/_search?pretty' -d ' { "query": { "match_all":
{} }, "sort": { "_script": { "script": "_source.name != null?_source.name.length():0", "type" : "number" } } }' lOBNFzϑΟʔϧυͷ͞Λιʔτͱͯ͠ฦ͢ lUZQFzͰιʔτͷσʔλܕΛࢦఆ
/BUJWF4DSJQU
/BUJWF4DSJQUͷ࣮ w /BUJWF4DSJQU'BDUPSZΛ࣮ͯ͠OFX4DSJQU ϝιουΛΦʔόʔϥΠυ w "CTUSBDU4FBSDI4DSJQUΛܧঝͯ͠SVO ϝιουΛΦʔόʔϥΠυ public class MyScript
extends AbstractSearchScript {" ! public static class Factory extends AbstractComponent implements NativeScriptFactory{" ! @Inject" public Factory(Node node, Settings settings) {" }" ! @Override" public ExecutableScript newScript(@Nullable Map<String, Object> params) {" return new MyScript();" }" }" ! private MyScript() {" }" ! @Override" public Object run() {" return SOME_RESPONSE;" }" }
/BUJWF4DSJQUͰඇਖ਼نԽ /PEFΦϒδΣΫτʹΞΫηεͰ͖ΔͷͰ$MJFOU͑Δͣ ඥ͍ͨυΩϡϝϯτΛऔಘͯ͠ϑΟʔϧυʹηοτ͢Ε +0*/ͬΆ͍͜ͱ͕Ͱ͖ͦ͏ ɾɾɾͱࢥͬͨΒ͏͋ͬͨ IUUQTHJUIVCDPNJNPUPWFMBTUJDTFBSDIOBUJWFTDSJQUFYBNQMF ରԠ͕ͩɺʮTΛখจࣈʹʯमਖ਼͢Δ͚ͩͰରԠՄೳ
࠷ޙʹ
ΫϥελߏͰͷҙ w શͯͷϊʔυʹಉҰεΫϦϓτΛஔ͢Δ ϊʔυؒͰεΫϦϓτಉظ͞Εͳ͍ w ࠞͥΔͳةݥʂ ϊʔυؒͰͷεΫϦϓτͷόʔδϣϯҧ͍ͳͲݕ͠ͳ͍ ֤ϊʔυ໊લղܾ͑͞Ͱ͖Εϩʔυͨ͠εΫϦϓτΛ࣮ߦ͢Δ ಉҰ໊ͰҟͳΔεΫϦϓτΛஔͨ͠߹ɺॲཧ͢ΔϊʔυʹԠͯ͡ ҟͳΔ݁ՌΛฦ͢
w εΫϦϓτ࣮ߦՄೳͳϊʔυͰͷΈॲཧ͞ΕΔ ࣮ߦՄೳͳγϟʔυ͕ଘࡏ͢Δ߹ͦͷγϟʔυ͚ͩͰ࣮ߦ͢Δ ʢ࣮ߦͰ͖ͳ͍γϟʔυʹॲཧΛৼΓ͚ͳ͍ʜͬΆ͍ʣ ϓϥΠϚϦʗϨϓϦΧͷશγϟʔυͰεΫϦϓτΛ࣮ߦͰ͖ͳ͍߹ɺ ͦͷγϟʔυͰͷݕࡧΤϥʔʹͳΔ
ΫϥελߏͰͷҙ ී௨ʹݕࡧՄೳ ݕࡧϦΫΤετ͜ͳ͍ ී௨ʹݕࡧՄೳ ݕࡧࣦഊ ˞l#FMBTDPzͷΈͰεΫϦϓτ࣮ߦՄೳͳ߹
·ͱΊ w %ZOBNJD4DSJQU खܰʹࢼͤͯ։ൃ͚ w 1SFMPBEFE4DSJQU ΦʔτϦϩʔυศར w /BUJWF4DSJQU ੑೳ໘Ͱ࠷
εΫϦϓτͱͯ͠ͷखܰ͋͞·Γͳ͍ w ϊʔυؒͰͷεΫϦϓτͷಉظͯ͘͠Εͳ͍ શϊʔυʹಉ͡εΫϦϓτΛඋ͢Δඞཁ͕͋Δ େنͳΫϥελͩͱ໘
͓͠·͍