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
強化学習「理論」入門
enakai00
3
3.6k
AIで変わるエンジニアの働き方(仮)
naoinaoi
0
410
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
650
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
590
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
790
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
290
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
190
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
RelayerというPHPのフレームワークを作った
polidog
PRO
0
120
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
330
NANDでも描画したい!
nichica906
2
530
Featured
See All Featured
Making Projects Easy
brettharned
120
6.7k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Test your architecture with Archunit
thirion
2
2.4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
ラッコキーワード サービス紹介資料
rakko
1
4.5M
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
360
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Docker and Python
trallard
47
4.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
280
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 ϊʔυؒͰͷεΫϦϓτͷಉظͯ͘͠Εͳ͍ શϊʔυʹಉ͡εΫϦϓτΛඋ͢Δඞཁ͕͋Δ େنͳΫϥελͩͱ໘
͓͠·͍