Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
200
Steerable Visual Representations
sansantech
PRO
0
180
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
3
1k
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
190
AIネイティブ企業への変革。パーソルキャリアが挑む「データメッシュ×ガバナンス」のアーキテクチャ戦略
techtekt
PRO
0
120
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
220
AI時代のGraphQL
joere
3
350
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
230
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
400
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
240
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
2
6.5k
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
450
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
BBQ
matthewcrist
90
10k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
460
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
350
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
540
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Visualization
eitanlees
153
17k
Facilitating Awesome Meetings
lara
57
7.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
740
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 ϊʔυؒͰͷεΫϦϓτͷಉظͯ͘͠Εͳ͍ શϊʔυʹಉ͡εΫϦϓτΛඋ͢Δඞཁ͕͋Δ େنͳΫϥελͩͱ໘
͓͠·͍