Slide 1

Slide 1 text

&MBTUJDTFBSDIͰ 4DSJQUJOH ୈճ&MBTUJDTFBSDIษڧձ
 !QJTBUPTIJ

Slide 2

Slide 2 text

ࣗݾ঺հ ໊લୌా੟ݾ !QJTBUPTIJ ॴଐגࣜձࣾ෋࢜௨ιϑτ΢ΣΞςΫϊϩδʔζ ੜଉ஍ͧ͠ʔ͔ ͓࢓ࣄ#BB4ج൫։ൃɻݘͷࢄาɻ

Slide 3

Slide 3 text

4DSJQUJOH֓ཁ w ΫΤϦ࣮ߦ࣌ͷࣜධՁΛಠࣗͷϩδοΫͰΧελϚΠζͰ͖Δ
 ݕࡧ݁ՌͷϑΟʔϧυɾϑΟϧλϦϯά
 υΩϡϝϯτͷείΞ
 ݕࡧ݁ՌҰཡͷιʔτॱ
 ʜFUD w ଟ࠼ͳݴޠαϙʔτ
 .7&- %FGBVMU 
 +BWB4DSJQU
 1ZUIPO
 (SPPWZ
 +BWB

Slide 4

Slide 4 text

େ·͔ͳ෼ྨ w %ZOBNJD4DSJQU
 ΫΤϦʹ௚઀εΫϦϓτΛهड़
 ͓खܰ w 1SFMPBEFE4DSJQU
 αʔόʹεΫϦϓτϑΝΠϧΛ഑ஔ &4@)0.&DPOpHTDSJQUT 
 Ұఆ࣌ؒຖʹϦϩʔυʢΠϯλʔόϧࢦఆՄೳʣ w /BUJWF4DSJQU
 +BWBͰ࣮૷
 ࠷଎
 $-"441"5)্ʹKBSϑΝΠϧΛ഑ஔ
 ىಈ࣌ʹϩʔυɺߋ৽࣌͸ཁ࠶ىಈ

Slide 5

Slide 5 text

4BNQMFT

Slide 6

Slide 6 text

ϑΟʔϧυ஋ͷจࣈྻஔ׵ 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(\"[ϐʔʔ]\")"
 }
 }
 }' ి࿩൪߸ Β͖͠จࣈྻ ΛϚεΫͯ͠ΈΔ

Slide 7

Slide 7 text

ϑΟʔϧυ஋ͷจࣈྻஔ׵ {
 "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ʹి࿩ͯ͠Ͷɻ" ]
 }
 } ]
 }
 } ϚεΫͯ͠Έͨ݁Ռ

Slide 8

Slide 8 text

ݕࡧ݁ՌͷϑΟϧλϦϯά 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ϑΟʔϧυ͕ࢦఆ௕Ҏ্ͷυΩϡϝϯτͷΈฦ͢

Slide 9

Slide 9 text

%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ϑΟʔϧυ͕ࢦఆ௕Ҏ্ͷυΩϡϝϯτͷΈ࡟আ

Slide 10

Slide 10 text

ݕࡧ݁Ռͷιʔτ 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Ͱιʔτ஋ͷσʔλܕΛࢦఆ

Slide 11

Slide 11 text

/BUJWF4DSJQU

Slide 12

Slide 12 text

/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 params) {" return new MyScript();" }" }" ! private MyScript() {" }" ! @Override" public Object run() {" return SOME_RESPONSE;" }" }

Slide 13

Slide 13 text

/BUJWF4DSJQUͰඇਖ਼نԽ /PEFΦϒδΣΫτʹΞΫηεͰ͖ΔͷͰ$MJFOU΋࢖͑Δ͸ͣ ඥ෇͍ͨυΩϡϝϯτΛऔಘͯ͠ϑΟʔϧυʹηοτ͢Ε͹ +0*/ͬΆ͍͜ͱ͕Ͱ͖ͦ͏ ɾɾɾͱࢥͬͨΒ΋͏͋ͬͨ
 
 IUUQTHJUIVCDPNJNPUPWFMBTUJDTFBSDIOBUJWFTDSJQUFYBNQMF ରԠ͕ͩɺʮTΛখจࣈʹʯमਖ਼͢Δ͚ͩͰରԠՄೳ

Slide 14

Slide 14 text

࠷ޙʹ

Slide 15

Slide 15 text

Ϋϥελߏ੒Ͱͷ஫ҙ఺ w શͯͷϊʔυʹಉҰεΫϦϓτΛ഑ஔ͢Δ
 ϊʔυؒͰεΫϦϓτ͸ಉظ͞Εͳ͍ w ࠞͥΔͳةݥʂ
 ϊʔυؒͰͷεΫϦϓτͷόʔδϣϯҧ͍ͳͲ͸ݕ஌͠ͳ͍
 ֤ϊʔυ͸໊લղܾ͑͞Ͱ͖Ε͹ϩʔυͨ͠εΫϦϓτΛ࣮ߦ͢Δ
 ಉҰ໊ͰҟͳΔεΫϦϓτΛ഑ஔͨ͠৔߹ɺॲཧ͢ΔϊʔυʹԠͯ͡
 ҟͳΔ݁ՌΛฦ͢ w εΫϦϓτ͸࣮ߦՄೳͳϊʔυͰͷΈॲཧ͞ΕΔ
 ࣮ߦՄೳͳγϟʔυ͕ଘࡏ͢Δ৔߹͸ͦͷγϟʔυ͚ͩͰ࣮ߦ͢Δ
 ʢ࣮ߦͰ͖ͳ͍γϟʔυʹ͸ॲཧΛৼΓ෼͚ͳ͍ʜͬΆ͍ʣ
 ϓϥΠϚϦʗϨϓϦΧͷશγϟʔυͰεΫϦϓτΛ࣮ߦͰ͖ͳ͍৔߹ɺ ͦͷγϟʔυͰͷݕࡧ͸ΤϥʔʹͳΔ

Slide 16

Slide 16 text

Ϋϥελߏ੒Ͱͷ஫ҙ఺ ී௨ʹݕࡧՄೳ ݕࡧϦΫΤετ͜ͳ͍ ී௨ʹݕࡧՄೳ ݕࡧࣦഊ ˞l#FMBTDPzͷΈͰεΫϦϓτ࣮ߦՄೳͳ৔߹

Slide 17

Slide 17 text

·ͱΊ w %ZOBNJD4DSJQU
 खܰʹࢼͤͯ։ൃ޲͚ w 1SFMPBEFE4DSJQU
 ΦʔτϦϩʔυ͸ศར w /BUJWF4DSJQU
 ੑೳ໘Ͱ͸࠷଎
 εΫϦϓτͱͯ͠ͷखܰ͞͸͋·Γͳ͍ w ϊʔυؒͰͷεΫϦϓτͷಉظ͸ͯ͘͠Εͳ͍
 શϊʔυʹಉ͡εΫϦϓτΛ഑උ͢Δඞཁ͕͋Δ
 େن໛ͳΫϥελͩͱ໘౗

Slide 18

Slide 18 text

͓͠·͍