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
システム監視入門
grimoh
5
800
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
150
Atlassian Cloudサポート業務でのAIエージェント活用事例
smt7174
0
290
VPCセキュリティ対応の最新事情
nagisa53
2
360
AI エージェント時代のデジタルアイデンティティ
fujie
2
1.3k
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
170
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
290
ガバメントクラウドでのランサムウェア対策
techniczna
1
610
変化の早いClaude Codeを 書籍に落とし込む
oikon48
5
700
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
280
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
650
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
160
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
500
Navigating Weather and Climate Data
rabernat
0
440
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.7k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
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 ϊʔυؒͰͷεΫϦϓτͷಉظͯ͘͠Εͳ͍ શϊʔυʹಉ͡εΫϦϓτΛඋ͢Δඞཁ͕͋Δ େنͳΫϥελͩͱ໘
͓͠·͍