Repository: higee/elastic Branch: master Commit: 240ce84f6708 Files: 179 Total size: 204.4 KB Directory structure: gitextract__q_184o4/ ├── Install/ │ ├── config/ │ │ ├── docker-compose-higee.yml │ │ ├── docker-compose.yml │ │ └── kibana.yml │ ├── data/ │ │ ├── access.log │ │ ├── access2.log │ │ ├── apache.log │ │ ├── date.log │ │ ├── ip-address.log │ │ ├── test.csv │ │ ├── titanic-header.csv │ │ ├── titanic.csv │ │ └── titanic2.csv │ ├── driver/ │ │ └── mysql-connector-java-5.1.36-bin.jar │ └── object/ │ ├── nginx-dashboard.json │ ├── nginx-visualizations.json │ ├── shopping-dashboard.json │ └── shopping-visualizations.json ├── README.md ├── Week1_Kibana/ │ └── code/ │ ├── es_conf.py │ ├── fake.py │ └── insert.py ├── Week2_Kibana/ │ └── code/ │ └── timelion/ │ ├── all │ ├── exercise │ ├── tl10_scale_interval │ ├── tl11_if │ ├── tl1_index │ ├── tl2_timefield │ ├── tl3_query │ ├── tl4_metric │ ├── tl5_indices │ ├── tl6_label │ ├── tl7_divide │ ├── tl8_offset │ └── tl9_range ├── Week3_Kibana/ │ └── code/ │ ├── lucene_query_syntax/ │ │ ├── all │ │ ├── and │ │ ├── compound │ │ ├── exact_field_match │ │ ├── exercise │ │ ├── field_match │ │ ├── fuzzy │ │ ├── keyword │ │ ├── negative │ │ ├── not │ │ ├── numeric │ │ ├── or │ │ ├── positive │ │ ├── proximity │ │ ├── range │ │ ├── term │ │ ├── wildcard_1 │ │ └── wildcard_2 │ └── scripted_field/ │ ├── arithmetic_operation_1 │ ├── arithmetic_operation_2 │ ├── concat_1 │ ├── date_1 │ ├── date_2 │ ├── date_3 │ ├── date_4 │ ├── date_5 │ ├── if_1 │ └── if_2 ├── Week4_Elasticsearch/ │ ├── code/ │ │ ├── data-type/ │ │ │ ├── complex/ │ │ │ │ ├── array/ │ │ │ │ │ ├── indexing │ │ │ │ │ ├── mapping │ │ │ │ │ └── search │ │ │ │ ├── nested/ │ │ │ │ │ ├── indexing │ │ │ │ │ ├── mapping │ │ │ │ │ ├── search_1 │ │ │ │ │ └── search_2 │ │ │ │ └── object/ │ │ │ │ ├── indexing │ │ │ │ └── mapping │ │ │ └── core/ │ │ │ ├── float │ │ │ ├── numeric │ │ │ └── string │ │ └── elasticsearch_API/ │ │ ├── document/ │ │ │ ├── add-document-post │ │ │ ├── add-document-put │ │ │ ├── check-document-id │ │ │ ├── delete-document-id │ │ │ ├── delete-document-query │ │ │ ├── exercise │ │ │ ├── reindex-all-documents │ │ │ ├── reindex-some-documents │ │ │ ├── update-document-id-all-fields │ │ │ ├── update-document-id-some-fields │ │ │ ├── update-document-query │ │ │ └── upsert-document │ │ ├── indices/ │ │ │ ├── add-mapping │ │ │ ├── check-mapping │ │ │ ├── check-mapping-template │ │ │ ├── create-index │ │ │ ├── create-mapping-template │ │ │ ├── create-mapping-with-index │ │ │ ├── create-mapping-without-index │ │ │ ├── delete-index │ │ │ └── exercise │ │ └── search/ │ │ ├── from-size │ │ ├── query_dsl/ │ │ │ ├── Compound-queries/ │ │ │ │ ├── bool-a-and-b │ │ │ │ ├── bool-a-and-b-or-c │ │ │ │ ├── bool-a-and-b-or-c-or-d │ │ │ │ ├── bool-a-and-not-b │ │ │ │ ├── bool-a-or-b │ │ │ │ └── bool-example │ │ │ ├── Full-text-queries/ │ │ │ │ ├── match │ │ │ │ └── query-string │ │ │ ├── Specialized-queries/ │ │ │ │ └── script-query │ │ │ ├── TERM-VS-MATCH/ │ │ │ │ ├── indexing │ │ │ │ ├── keyword-match-search │ │ │ │ ├── keyword-term-search │ │ │ │ ├── mapping │ │ │ │ ├── text-match-search │ │ │ │ └── text-term-search │ │ │ ├── Term-level-queries/ │ │ │ │ ├── exists │ │ │ │ ├── fuzzy │ │ │ │ ├── prefix │ │ │ │ ├── range │ │ │ │ ├── term │ │ │ │ ├── terms │ │ │ │ └── wildcard │ │ │ └── match_all │ │ ├── sort │ │ └── source │ └── object/ │ ├── dashboard/ │ │ ├── nginx-dashboard.json │ │ └── shopping-dashboard.json │ ├── search/ │ │ └── nginx-search.json │ └── visualization/ │ ├── nginx-visualization.json │ └── shopping-visualization.json ├── Week5_Logstash/ │ └── code/ │ ├── filter/ │ │ ├── csv/ │ │ │ ├── autodetect-column-names.conf │ │ │ ├── convert.conf │ │ │ └── separator.conf │ │ ├── date/ │ │ │ ├── date.conf │ │ │ └── default.conf │ │ ├── drop/ │ │ │ ├── drop1.conf │ │ │ └── drop2.conf │ │ ├── elasticsearch/ │ │ │ ├── example1.conf │ │ │ ├── example1_.conf │ │ │ ├── example2.conf │ │ │ ├── example3.conf │ │ │ ├── example3.json │ │ │ ├── example4.conf │ │ │ └── example4.json │ │ ├── grok/ │ │ │ ├── access.conf │ │ │ └── apache.conf │ │ ├── mutate/ │ │ │ ├── add_field.conf │ │ │ ├── remove_field.conf │ │ │ └── split.conf │ │ └── ruby/ │ │ ├── example1.conf │ │ └── example2.conf │ ├── input/ │ │ ├── elasticsearch/ │ │ │ └── elasticsearch.conf │ │ ├── file/ │ │ │ ├── file-sincedb-path.conf │ │ │ ├── file-start-position.conf │ │ │ ├── file.conf │ │ │ └── nginx.conf │ │ ├── jdbc/ │ │ │ ├── jdbc-schedule.conf │ │ │ ├── jdbc-sql-last-value-1.conf │ │ │ ├── jdbc-sql-last-value-2.conf │ │ │ └── jdbc.conf │ │ └── stdin/ │ │ └── stdin.conf │ ├── logstash.md │ └── output/ │ ├── conditional.conf │ ├── csv/ │ │ └── csv.conf │ ├── elasticsearch/ │ │ ├── elasticsearch-dynamic-field-name-1.conf │ │ ├── elasticsearch-dynamic-field-name-2.conf │ │ ├── elasticsearch-stdout.conf │ │ └── elasticsearch.conf │ └── stdout/ │ └── stdout.conf └── Week6_Review/ └── solution/ ├── p44_template ├── p46_logstash ├── p53-heatmap.json ├── p54-coordinate-map.json ├── p55-coordinate-map.json ├── p58-timelion.json ├── p60-pie-chart.json ├── p62-data-table.json ├── p64-markdown.json ├── p65-dashboard.json ├── p66_query_dsl ├── p67_logstash ├── p71_backup_logstash └── p73_backup_reindex ================================================ FILE CONTENTS ================================================ ================================================ FILE: Install/config/docker-compose-higee.yml ================================================ version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4 container_name: elasticsearch environment: http.host: '0.0.0.0' network.host: '127.0.0.1' ES_JAVA_OPTS: '-Xms4g -Xmx4g -XX:-AssumeMP' bootstrap.memory_lock: 'true' ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 nproc: soft: 4096 hard: 4096 ports: - "9200:9200" - "9300:9300" restart: always networks: - elastic logstash: image: docker.elastic.co/logstash/logstash-oss:6.2.4 container_name: logstash environment: JAVA_OPTS: '-Xms1g -Xmx1g -XX:-AssumeMP' depends_on: ['elasticsearch'] networks: - elastic volumes: - ../driver:/usr/share/logstash/driver - ../data:/usr/share/logstash/data - /var/log/nginx:/usr/share/logstash/data2 - ../../Week5_Logstash/code:/usr/share/logstash/code - ../../Week5_Logstash/code/input/file/nginx.conf:/usr/share/logstash/pipeline/logstash.conf restart: always kibana: image: docker.elastic.co/kibana/kibana-oss:6.2.4 container_name: kibana environment: - ELASTICSEARCH_HOST=elasticsearch - ELASTICSEARCH_PORT=9200 depends_on: ['elasticsearch'] volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml ports: - "5601:5601" restart: always networks: - elastic networks: elastic: driver: bridge ================================================ FILE: Install/config/docker-compose.yml ================================================ version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4 container_name: elasticsearch environment: http.host: '0.0.0.0' network.host: '127.0.0.1' ES_JAVA_OPTS: '-Xms2g -Xmx2g -XX:-AssumeMP' bootstrap.memory_lock: 'true' reindex.remote.whitelist: "elasticsearch.higee.co:80" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 nproc: soft: 4096 hard: 4096 ports: - "9200:9200" - "9300:9300" restart: always networks: - elastic logstash: image: docker.elastic.co/logstash/logstash-oss:6.2.4 container_name: logstash environment: JAVA_OPTS: '-Xms512m -Xmx512m -XX:-AssumeMP' depends_on: ['elasticsearch'] volumes: - ../driver:/usr/share/logstash/driver - ../data:/usr/share/logstash/data - ../../Week5_Logstash/code:/usr/share/logstash/code tty: true entrypoint: ["/bin/bash"] restart: always networks: - elastic kibana: image: docker.elastic.co/kibana/kibana-oss:6.2.4 container_name: kibana environment: - ELASTICSEARCH_HOST=elasticsearch - ELASTICSEARCH_PORT=9200 depends_on: ['elasticsearch'] volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml ports: - "5601:5601" restart: always networks: - elastic networks: elastic: driver: bridge ================================================ FILE: Install/config/kibana.yml ================================================ #Kibana is served by a back end server. This setting specifies the port to use. #server.port: 5601 # Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values. # The default is 'localhost', which usually means remote machines will not be able to connect. # To allow connections from remote users, set this parameter to a non-loopback address. server.host: "0.0.0.0" # Enables you to specify a path to mount Kibana at if you are running behind a proxy. This only affects # the URLs generated by Kibana, your proxy is expected to remove the basePath value before forwarding requests # to Kibana. This setting cannot end in a slash. #server.basePath: "" # The maximum payload size in bytes for incoming server requests. #server.maxPayloadBytes: 1048576 # The Kibana server's name. This is used for display purposes. #server.name: "your-hostname" # The URL of the Elasticsearch instance to use for all your queries. elasticsearch.url: "http://elasticsearch:9200" # When this setting's value is true Kibana uses the hostname specified in the server.host # setting. When the value of this setting is false, Kibana uses the hostname of the host # that connects to this Kibana instance. #elasticsearch.preserveHost: true # Kibana uses an index in Elasticsearch to store saved searches, visualizations and # dashboards. Kibana creates a new index if the index doesn't already exist. #kibana.index: ".kibana" # The default application to load. #kibana.defaultAppId: "discover" # If your Elasticsearch is protected with basic authentication, these settings provide # the username and password that the Kibana server uses to perform maintenance on the Kibana # index at startup. Your Kibana users still need to authenticate with Elasticsearch, which # is proxied through the Kibana server. #elasticsearch.username: "user" #elasticsearch.password: "pass" # Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively. # These settings enable SSL for outgoing requests from the Kibana server to the browser. #server.ssl.enabled: false #server.ssl.certificate: /path/to/your/server.crt #server.ssl.key: /path/to/your/server.key # Optional settings that provide the paths to the PEM-format SSL certificate and key files. # These files validate that your Elasticsearch backend uses the same key files. #elasticsearch.ssl.certificate: /path/to/your/client.crt #elasticsearch.ssl.key: /path/to/your/client.key # Optional setting that enables you to specify a path to the PEM file for the certificate # authority for your Elasticsearch instance. #elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ] # To disregard the validity of SSL certificates, change this setting's value to 'none'. #elasticsearch.ssl.verificationMode: full # Time in milliseconds to wait for Elasticsearch to respond to pings. Defaults to the value of # the elasticsearch.requestTimeout setting. #elasticsearch.pingTimeout: 1500 # Time in milliseconds to wait for responses from the back end or Elasticsearch. This value # must be a positive integer. #elasticsearch.requestTimeout: 30000 # List of Kibana client-side headers to send to Elasticsearch. To send *no* client-side # headers, set this value to [] (an empty list). #elasticsearch.requestHeadersWhitelist: [ authorization ] # Header names and values that are sent to Elasticsearch. Any custom headers cannot be overwritten # by client-side headers, regardless of the elasticsearch.requestHeadersWhitelist configuration. #elasticsearch.customHeaders: {} # Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable. #elasticsearch.shardTimeout: 0 # Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying. #elasticsearch.startupTimeout: 5000 # Specifies the path where Kibana creates the process ID file. #pid.file: /var/run/kibana.pid # Enables you specify a file where Kibana stores log output. #logging.dest: stdout # Set the value of this setting to true to suppress all logging output. #logging.silent: false # Set the value of this setting to true to suppress all logging output other than error messages. #logging.quiet: false # Set the value of this setting to true to log all events, including system usage information # and all requests. #logging.verbose: false # Set the interval in milliseconds to sample system and process performance # metrics. Minimum is 100ms. Defaults to 5000. #ops.interval: 5000 # The default locale. This locale can be used in certain circumstances to substitute any missing # translations. #i18n.defaultLocale: "en" regionmap: layers: - name: "Korea City" url: "https://s3.ap-northeast-2.amazonaws.com/higee-map/korea.geojson" fields: - name: "name" description: "City name" ================================================ FILE: Install/data/access.log ================================================ 2018-02-05T05:49:53.859060Z 172.30.39.133 0.079 200 "GET https://helloworld.com/users/1 HTTP/1.1" 2018-02-05T06:49:53.859060Z 172.29.43.253 0.1 404 "GET https://helloworld.com/users/3 HTTP/1.1" 2018-02-05T07:49:53.859060Z 172.30.40.210 0.052 503 "GET https://helloworld.com/users/2 HTTP/1.1" 2018-02-05T08:49:53.859060Z 172.31.40.131 0.038 200 "POST https://helloworld.com/users/5 HTTP/1.1" ================================================ FILE: Install/data/access2.log ================================================ 2018-09-10T05:49:22.859Z 178.73.215.171 0.079 200 "GET https://helloworld.com/users/1 HTTP/1.1" 2018-09-10T16:51:42.119Z 115.127.73.2 0.1 404 "GET https://helloworld.com/users/3 HTTP/1.1" 2018-09-10T07:41:39.239Z 207.148.120.201 0.052 503 "GET https://helloworld.com/users/2 HTTP/1.1" 2018-09-10T08:09:03.779Z 93.117.2.7 0.038 200 "POST https://helloworld.com/users/5 HTTP/1.1" 2018-09-10T08:19:13.989Z 93.115.2.7 0.038 200 "POST https://helloworld.com/users/5 HTTP/1.1" ================================================ FILE: Install/data/apache.log ================================================ 127.0.0.1 - - [13/Dec/2015:03:02:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OSX 10.9; rv:25.0) Gecko/20100101 Firefox/25.0" 123.222.333.123 HOME - [01/Feb/1998:01:08:46 -0800] "GET /bannerad/ad.htm HTTP/1.0" 200 2808 "http://www.referrer.com/bannerad/ba_intro.htm" "Mozilla/4.01 (Macintosh; I; PPC)" daum.net HOME - [01/Apr/1998:01:09:14 -0800] "GET /bannerad/click.htm HTTP/1.0" 200 2070 "http://www.referrer.com/bannerad/menu.htm" "Mozilla/4.01 (Macintosh; I; PPC)" 111.222.333.123 AWAY - [01/Apr/1998:01:09:14 -0800] "GET /bannerad/click.htm HTTP/1.0" 200 2070 "http://www.referrer.com/bannerad/menu.htm" "Mozilla/4.01 (Macintosh; I; PPC)" unicomp6.unicomp.net AWAY - [01/Apr/1998:01:09:14 -0800] "GET /bannerad/click.htm HTTP/1.0" 200 2070 "http://www.referrer.com/bannerad/menu.htm" "Mozilla/4.01 (Macintosh; I; PPC)" 123.222.333.123 AWAY - [01/Feb/2003:01:08:53 -0800] "GET /bannerad/ad7.gif HTTP/1.0" 200 332 "http://www.referrer.com/bannerad/ba_ad.htm" "Mozilla/4.01 (Macintosh; I; PPC)" ================================================ FILE: Install/data/date.log ================================================ 2018-02-12T16:03:38 Ben 2018-02-13T03:25:31 John 2018-02-14T13:31:11 Leo ================================================ FILE: Install/data/ip-address.log ================================================ 13.124.230.195:5601 13.124.230.195:3306 13.124.230.195:9200 13.124.230.195:9300 ================================================ FILE: Install/data/test.csv ================================================ customer_card,seller_site,seller_rating,customer_sex,product_price,product_quantity,customer_age,customer_location,date_order,date_delivery,product_item,product_gps_lat,product_gps_lon 시티,옥션,3,남성,29000,4,46,경기도,2018-01-09T03:08:32,2018-01-12T19:23:32,가디건,37.5656494,126.868678 국민,옥션,1,남성,0,2,26,경기도,2018-01-19T03:08:32,2018-01-23T19:23:32,가디건,37.5556494,126.898678 시티,쿠팡,2,여성,10,4,46,서울특별시,2017-01-10T03:08:32,2017-11-12T19:23:32,가디건,37.50256494,127.038678 하나,11번가,5,남성,29000,4,46,경기도,2018-01-09T03:08:32,2018-01-12T19:23:32,셔츠,37.5656494,126.868678 하나,11번가,1,남성,0,2,26,경기도,2018-01-19T03:08:32,2018-01-23T19:23:32,니트,37.5556494,126.898678 우리,쿠팡,2,여성,1000,4,46,서울특별시,2017-01-10T03:08:32,2017-11-12T19:23:32,청바지,37.50256494,127.038678 시티,위메프,3,남성,3000,4,46,경기도,2018-01-09T03:08:32,2018-01-12T19:23:32,가디건,37.5656494,126.868678 국민,위메프,3,남성,5000,2,26,경기도,2018-01-19T03:08:32,2018-01-23T19:23:32,셔츠,37.5556494,126.898678 우리,쿠팡,3,여성,10000,4,46,서울특별시,2017-01-10T03:08:32,2017-11-12T19:23:32,셔츠,37.50256494,127.038678 국민,옥션,4,남성,290000,4,46,경기도,2018-01-09T03:08:32,2018-01-12T19:23:32,셔츠,37.5656494,126.868678 국민,GS샵,5,남성,1000,2,26,경기도,2018-01-19T03:08:32,2018-01-23T19:23:32,셔츠,37.5556494,126.898678 시티,GS샵,1,여성,15000,4,46,서울특별시,2017-01-10T03:08:32,2017-11-12T19:23:32,가디건,37.50256494,127.038678 ================================================ FILE: Install/data/titanic-header.csv ================================================ Index,Name,Survival,Pclass,Sex,Age,SibSp,Parch,Ticket,Fare,Embarked 1,Braund,0,3,male,22,1,0,A/5 21171,7.25,S 2,Cumings,1,1,female,38,1,0,PC 17599,71.2833,C 3,Heikkinen,1,3,female,26,0,0,STON/O2. 3101282,7.925,S ================================================ FILE: Install/data/titanic.csv ================================================ 1,Braund,0,3,male,22,1,0,A/5 21171,7.25,S 2,Cumings,1,1,female,38,1,0,PC 17599,71.2833,C 3,Heikkinen,1,3,female,26,0,0,STON/O2. 3101282,7.925,S 4,Futrelle,1,1,female,35,1,0,113803,53.1,S 5,Allen,0,3,male,35,0,0,373450,8.05,S 6,Moran,0,3,male,29.69911765,0,0,330877,8.4583,Q 7,McCarthy,0,1,male,54,0,0,17463,51.8625,S 8,Palsson,0,3,male,2,3,1,349909,21.075,S 9,Johnson,1,3,female,27,0,2,347742,11.1333,S 10,Nasser,1,2,female,14,1,0,237736,30.0708,C 11,Sandstrom,1,3,female,4,1,1,PP 9549,16.7,S 12,Bonnell,1,1,female,58,0,0,113783,26.55,S 13,Saundercock,0,3,male,20,0,0,A/5. 2151,8.05,S 14,Andersson,0,3,male,39,1,5,347082,31.275,S 15,Vestrom,0,3,female,14,0,0,350406,7.8542,S 16,Hewlett,1,2,female,55,0,0,248706,16,S 17,Rice,0,3,male,2,4,1,382652,29.125,Q 18,Williams,1,2,male,29.69911765,0,0,244373,13,S 19,Vander Planke,0,3,female,31,1,0,345763,18,S 20,Masselmani,1,3,female,29.69911765,0,0,2649,7.225,C 21,Fynney,0,2,male,35,0,0,239865,26,S 22,Beesley,1,2,male,34,0,0,248698,13,S 23,McGowan,1,3,female,15,0,0,330923,8.0292,Q 24,Sloper,1,1,male,28,0,0,113788,35.5,S 25,Palsson,0,3,female,8,3,1,349909,21.075,S 26,Asplund,1,3,female,38,1,5,347077,31.3875,S 27,Emir,0,3,male,29.69911765,0,0,2631,7.225,C 28,Fortune,0,1,male,19,3,2,19950,263,S 29,O'Dwyer,1,3,female,29.69911765,0,0,330959,7.8792,Q 30,Todoroff,0,3,male,29.69911765,0,0,349216,7.8958,S 31,Uruchurtu,0,1,male,40,0,0,PC 17601,27.7208,C 32,Spencer,1,1,female,29.69911765,1,0,PC 17569,146.5208,C 33,Glynn,1,3,female,29.69911765,0,0,335677,7.75,Q 34,Wheadon,0,2,male,66,0,0,C.A. 24579,10.5,S 35,Meyer,0,1,male,28,1,0,PC 17604,82.1708,C 36,Holverson,0,1,male,42,1,0,113789,52,S 37,Mamee,1,3,male,29.69911765,0,0,2677,7.2292,C 38,Cann,0,3,male,21,0,0,A./5. 2152,8.05,S 39,Vander Planke,0,3,female,18,2,0,345764,18,S 40,Nicola-Yarred,1,3,female,14,1,0,2651,11.2417,C 41,Ahlin,0,3,female,40,1,0,7546,9.475,S 42,Turpin,0,2,female,27,1,0,11668,21,S 43,Kraeff,0,3,male,29.69911765,0,0,349253,7.8958,C 44,Laroche,1,2,female,3,1,2,SC/Paris 2123,41.5792,C 45,Devaney,1,3,female,19,0,0,330958,7.8792,Q 46,Rogers,0,3,male,29.69911765,0,0,S.C./A.4. 23567,8.05,S 47,Lennon,0,3,male,29.69911765,1,0,370371,15.5,Q 48,O'Driscoll,1,3,female,29.69911765,0,0,14311,7.75,Q 49,Samaan,0,3,male,29.69911765,2,0,2662,21.6792,C 50,Arnold-Franchi,0,3,female,18,1,0,349237,17.8,S ================================================ FILE: Install/data/titanic2.csv ================================================ 51,Panula,0,3,male,7,4,1,3101295,39.6875,S 52,Nosworthy,0,3,male,21,0,0,A/4. 39886,7.8,S 53,Harper,1,1,female,49,1,0,PC 17572,76.7292,C 54,Faunthorpe,1,2,female,29,1,0,2926,26,S 55,Ostby,0,1,male,65,0,1,113509,61.9792,C 56,Woolner,1,1,male,29.69911765,0,0,19947,35.5,S 57,Rugg,1,2,female,21,0,0,C.A. 31026,10.5,S 58,Novel,0,3,male,28.5,0,0,2697,7.2292,C 59,West,1,2,female,5,1,2,C.A. 34651,27.75,S 60,Goodwin,0,3,male,11,5,2,CA 2144,46.9,S 61,Sirayanian,0,3,male,22,0,0,2669,7.2292,C 62,Icard,1,1,female,38,0,0,113572,80,C 63,Harris,0,1,male,45,1,0,36973,83.475,S 64,Skoog,0,3,male,4,3,2,347088,27.9,S 65,Stewart,0,1,male,29.69911765,0,0,PC 17605,27.7208,C 66,Moubarek,1,3,male,29.69911765,1,1,2661,15.2458,C 67,Nye,1,2,female,29,0,0,C.A. 29395,10.5,S 68,Crease,0,3,male,19,0,0,S.P. 3464,8.1583,S 69,Andersson,1,3,female,17,4,2,3101281,7.925,S 70,Kink,0,3,male,26,2,0,315151,8.6625,S 71,Jenkin,0,2,male,32,0,0,C.A. 33111,10.5,S 72,Goodwin,0,3,female,16,5,2,CA 2144,46.9,S 73,Hood,0,2,male,21,0,0,S.O.C. 14879,73.5,S 74,Chronopoulos,0,3,male,26,1,0,2680,14.4542,C 75,Bing,1,3,male,32,0,0,1601,56.4958,S 76,Moen,0,3,male,25,0,0,348123,7.65,S 77,Staneff,0,3,male,29.69911765,0,0,349208,7.8958,S 78,Moutal,0,3,male,29.69911765,0,0,374746,8.05,S 79,Caldwell,1,2,male,0.83,0,2,248738,29,S 80,Dowdell,1,3,female,30,0,0,364516,12.475,S 81,Waelens,0,3,male,22,0,0,345767,9,S 82,Sheerlinck,1,3,male,29,0,0,345779,9.5,S 83,McDermott,1,3,female,29.69911765,0,0,330932,7.7875,Q 84,Carrau,0,1,male,28,0,0,113059,47.1,S 85,Ilett,1,2,female,17,0,0,SO/C 14885,10.5,S 86,Backstrom,1,3,female,33,3,0,3101278,15.85,S 87,Ford,0,3,male,16,1,3,W./C. 6608,34.375,S 88,Slocovski,0,3,male,29.69911765,0,0,SOTON/OQ 392086,8.05,S 89,Fortune,1,1,female,23,3,2,19950,263,S 90,Celotti,0,3,male,24,0,0,343275,8.05,S 91,Christmann,0,3,male,29,0,0,343276,8.05,S 92,Andreasson,0,3,male,20,0,0,347466,7.8542,S 93,Chaffee,0,1,male,46,1,0,W.E.P. 5734,61.175,S 94,Dean,0,3,male,26,1,2,C.A. 2315,20.575,S 95,Coxon,0,3,male,59,0,0,364500,7.25,S 96,Shorney,0,3,male,29.69911765,0,0,374910,8.05,S 97,Goldschmidt,0,1,male,71,0,0,PC 17754,34.6542,C 98,Greenfield,1,1,male,23,0,1,PC 17759,63.3583,C 99,Doling,1,2,female,34,0,1,231919,23,S 100,Kantor,0,2,male,34,1,0,244367,26,S ================================================ FILE: Install/object/nginx-dashboard.json ================================================ [ { "_id": "bd2418e0-6f26-11e8-a0fb-51f0eb991705", "_type": "dashboard", "_source": { "title": "nginx", "hits": 0, "description": "", "panelsJSON": "[{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 350\":\"rgb(247,252,245)\",\"1,050 - 1,400\":\"rgb(35,139,69)\",\"350 - 700\":\"rgb(199,233,192)\",\"700 - 1,050\":\"rgb(116,196,118)\"},\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"1\",\"w\":6,\"x\":0,\"y\":7},\"id\":\"fe7b9a30-6f20-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"2\",\"w\":4,\"x\":6,\"y\":7},\"id\":\"25a7f140-6f20-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"3\",\"w\":2,\"x\":10,\"y\":7},\"id\":\"cfbbc570-6f26-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"3\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"mapCenter\":[15.284185114076445,12.128906250000002],\"mapZoom\":2},\"gridData\":{\"h\":4,\"i\":\"4\",\"w\":12,\"x\":0,\"y\":10},\"id\":\"7a9123a0-6f27-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"4\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":4,\"i\":\"5\",\"w\":12,\"x\":0,\"y\":3},\"id\":\"08e28cc0-6f28-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"5\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"6\",\"w\":12,\"x\":0,\"y\":0},\"id\":\"57d11570-6f2a-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"6\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"7\",\"w\":6,\"x\":0,\"y\":14},\"id\":\"98a8d0b0-6f2a-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"7\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"8\",\"w\":6,\"x\":6,\"y\":14},\"id\":\"4b2430e0-6f2b-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"8\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"colors\":{\"200\":\"#6ED0E0\",\"NOT 200\":\"#F29191\",\"nginx.access.response_code:200\":\"#F29191\"},\"legendOpen\":true}},\"gridData\":{\"h\":3,\"i\":\"9\",\"w\":12,\"x\":0,\"y\":20},\"id\":\"c1d84360-6f2c-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"9\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"10\",\"w\":12,\"x\":0,\"y\":23},\"id\":\"7b3cdde0-6f30-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"10\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"12\",\"w\":12,\"x\":0,\"y\":17},\"id\":\"de77bd70-6f31-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"12\",\"sort\":[\"nginx.access.body_sent.bytes\",\"desc\"],\"type\":\"search\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"13\",\"w\":12,\"x\":0,\"y\":26},\"id\":\"b23c8a00-6f32-11e8-a0fb-51f0eb991705\",\"panelIndex\":\"13\",\"type\":\"visualization\",\"version\":\"6.2.4\"}]", "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" } } } ] ================================================ FILE: Install/object/nginx-visualizations.json ================================================ [ { "_id": "7a9123a0-6f27-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] coordinate maps", "visState": "{\"title\":\"[nginx] coordinate maps\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"
© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.geoip.location\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":2}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "08e28cc0-6f28-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] region maps", "visState": "{\"title\":\"[nginx] region maps\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"attribution\":\"Made with NaturalEarth | Elastic Maps Service
\",\"name\":\"World Countries\",\"weight\":1,\"format\":{\"type\":\"geojson\"},\"url\":\"https://vector.maps.elastic.co/blob/5659313586569216?elastic_tile_service_tos=agree&my_app_version=6.2.4\",\"fields\":[{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},{\"name\":\"name\",\"description\":\"Country name\"},{\"name\":\"iso3\",\"description\":\"Three letter abbreviation\"}],\"created_at\":\"2017-04-26T17:12:15.978370\",\"tags\":[],\"id\":5659313586569216,\"layerId\":\"elastic_maps_service.World Countries\"},\"selectedJoinField\":{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":2,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.geoip.country_code2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{\"mapZoom\":2,\"mapCenter\":[11.695272733029402,24.433593750000004]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "cfbbc570-6f26-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] metric", "visState": "{\"title\":\"[nginx] metric\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":31}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"req\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "c1d84360-6f2c-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] area chart", "visState": "{\"title\":\"[nginx] area chart\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"req 개수\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"req 개수\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"req 개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"h\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":\"nginx.access.response_code:200\"},\"label\":\"200\"},{\"input\":{\"query\":\"NOT nginx.access.response_code:200\"},\"label\":\"NOT 200\"}]}}]}", "uiStateJSON": "{\"vis\":{\"colors\":{\"200\":\"#6ED0E0\",\"nginx.access.response_code:200\":\"#F29191\"},\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "98a8d0b0-6f2a-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] pie chart", "visState": "{\"title\":\"[nginx] pie chart\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.method\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "4b2430e0-6f2b-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] horizontal bar", "visState": "{\"title\":\"[nginx] horizontal bar\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"평균 전송량 (byte)\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"평균 전송량 (byte)\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"customLabel\":\"평균 전송량 (byte)\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.user_agent.name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"agent\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "fe7b9a30-6f20-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] heat map", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"요일\",\"field\":\"요일_한글\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"asc\",\"orderAgg\":{\"enabled\":true,\"id\":\"2-orderAgg\",\"params\":{\"field\":\"요일_숫자\"},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!median\",\"!std_dev\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\",\"!avg_bucket\",\"!max_bucket\",\"!min_bucket\",\"!sum_bucket\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"hideCustomLabel\":true,\"max\":null,\"min\":0,\"name\":\"orderAgg\",\"params\":[],\"title\":\"Order Agg\"},\"type\":\"avg\"},\"orderBy\":\"custom\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":7},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"customLabel\":\"시간대\",\"field\":\"시간대\",\"ranges\":[{\"from\":18,\"to\":23},{\"from\":14,\"to\":18},{\"from\":10,\"to\":14},{\"from\":5,\"to\":10},{\"from\":0,\"to\":5}]},\"schema\":\"group\",\"type\":\"range\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":6,\"colorsRange\":[],\"enableHover\":false,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"title\":\"[nginx] heat map\",\"type\":\"heatmap\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 584\":\"rgb(255,255,204)\",\"584 - 1,167\":\"rgb(255,230,146)\",\"1,167 - 1,750\":\"rgb(254,191,90)\",\"1,750 - 2,334\":\"rgb(253,141,60)\",\"2,334 - 2,917\":\"rgb(244,61,37)\",\"2,917 - 3,500\":\"rgb(202,8,35)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "1fe62120-6f37-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Goal", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"customBucket\":{\"enabled\":true,\"id\":\"1-bucket\",\"params\":{\"customInterval\":\"2h\",\"extended_bounds\":{},\"field\":\"@timestamp\",\"interval\":\"d\",\"min_doc_count\":1},\"schema\":{\"aggFilter\":[],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"max\":null,\"min\":0,\"name\":\"bucketAgg\",\"params\":[],\"title\":\"Bucket Agg\"},\"type\":\"date_histogram\"},\"customMetric\":{\"enabled\":true,\"id\":\"1-metric\",\"params\":{},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!percentile_ranks\",\"!median\",\"!std_dev\",\"!sum_bucket\",\"!avg_bucket\",\"!min_bucket\",\"!max_bucket\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"max\":null,\"min\":0,\"name\":\"metricAgg\",\"params\":[],\"title\":\"Metric Agg\"},\"type\":\"count\"}},\"schema\":\"metric\",\"type\":\"max_bucket\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"filters\":[{\"input\":{\"query\":\"nginx.access.geoip.country_name: \\\"United States\\\"\"},\"label\":\"\"}]},\"schema\":\"group\",\"type\":\"filters\"}],\"params\":{\"addLegend\":false,\"addTooltip\":true,\"gauge\":{\"autoExtend\":false,\"backStyle\":\"Full\",\"colorSchema\":\"Green to Red\",\"colorsRange\":[{\"from\":0,\"to\":200}],\"extendRange\":true,\"gaugeColorMode\":\"None\",\"gaugeStyle\":\"Full\",\"gaugeType\":\"Arc\",\"invertColors\":false,\"labels\":{\"color\":\"black\",\"show\":true},\"orientation\":\"vertical\",\"percentageMode\":true,\"scale\":{\"color\":\"#333\",\"labels\":false,\"show\":false,\"width\":2},\"style\":{\"bgColor\":false,\"bgFill\":\"#000\",\"fontSize\":60,\"labelColor\":false,\"subText\":\"\"},\"type\":\"meter\",\"useRanges\":false,\"verticalSplit\":false},\"isDisplayWarning\":false,\"type\":\"gauge\"},\"title\":\"[nginx] Goal\",\"type\":\"goal\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "57d11570-6f2a-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] markdown", "visState": "{\"title\":\"[nginx] markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":10,\"markdown\":\"### Nginx Access.Log Dashboard\\n---\\n```\\n66.249.82.131 - - [13/Jun/2018:17:01:02 +0000] \\\"GET /ui/favicons/favicon-16x16.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n118.221.38.242 - - [13/Jun/2018:17:01:14 +0000] \\\"POST /api/console/proxy?path=_aliases&method=GET HTTP/1.1\\\" 200 107 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"-\\\"\\n118.221.38.242 - - [13/Jun/2018:17:01:14 +0000] \\\"POST /api/console/proxy?path=_mapping&method=GET HTTP/1.1\\\" 200 974 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"-\\\"\\n66.249.82.131 - - [13/Jun/2018:17:01:16 +0000] \\\"GET /ui/favicons/favicon-32x32.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n66.249.82.129 - - [13/Jun/2018:17:01:17 +0000] \\\"GET /ui/favicons/favicon-16x16.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n```\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } }, { "_id": "7b3cdde0-6f30-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Timelion", "visState": "{\"title\":\"[nginx] Timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=nginx*, timefield=@timestamp, metric=count).label(전체).lines(), .es(index=nginx*, timefield=@timestamp, q= -nginx.access.response_code:200, metric=count).divide(.es(index=nginx*, timefield=@timestamp, metric=count)).if(gte, 0.5, .es(index=nginx*, timefield=@timestamp, metric=count, q=-nginx.access.response_code:200), null).points().color(#fd8282).label('에러 50% 이상').legend(position=ne)\",\"interval\":\"auto\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } }, { "_id": "25a7f140-6f20-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] tag-cloud", "visState": "{\"title\":\"[nginx] tag-cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":35},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.user_agent.os_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "2bd12750-a362-11e8-8d82-2973ec7f077b", "_type": "visualization", "_source": { "title": "[nginx] heat map2", "visState": "{\"title\":\"[nginx] heat map2\",\"type\":\"heatmap\",\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":6,\"colorsRange\":[],\"enableHover\":false,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"cardinality\",\"schema\":\"metric\",\"params\":{\"field\":\"nginx.access.remote_ip\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.geoip.city_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"orderAgg\":{\"id\":\"2-orderAgg\",\"enabled\":true,\"type\":\"avg\",\"schema\":{\"group\":\"none\",\"name\":\"orderAgg\",\"title\":\"Order Agg\",\"hideCustomLabel\":true,\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!median\",\"!std_dev\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\",\"!avg_bucket\",\"!max_bucket\",\"!min_bucket\",\"!sum_bucket\"],\"min\":0,\"max\":null,\"editor\":false,\"params\":[],\"deprecate\":false},\"params\":{\"field\":\"nginx.access.body_sent.bytes\"}},\"order\":\"desc\",\"orderBy\":\"custom\",\"customLabel\":\"요일\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"range\",\"schema\":\"group\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"ranges\":[{\"from\":0,\"to\":300},{\"from\":300,\"to\":600},{\"from\":600,\"to\":900},{\"from\":900,\"to\":null}],\"customLabel\":\"시간대\"}}]}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 7\":\"rgb(255,255,204)\",\"7 - 14\":\"rgb(255,230,146)\",\"14 - 20\":\"rgb(254,191,90)\",\"20 - 27\":\"rgb(253,141,60)\",\"27 - 34\":\"rgb(244,61,37)\",\"34 - 40\":\"rgb(202,8,35)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" } } }, { "_id": "b23c8a00-6f32-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Data Table", "visState": "{\"title\":\"[nginx] Data Table\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showMeticsAtAllLevels\":false,\"showPartialRows\":false,\"showTotal\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"nginx.access.geoip.city_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":2,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"도시\"}},{\"id\":\"5\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"customLabel\":\"평균 데이터 크기\"}},{\"id\":\"6\",\"enabled\":true,\"type\":\"range\",\"schema\":\"bucket\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"ranges\":[{\"from\":0,\"to\":1000},{\"from\":1000,\"to\":null}],\"customLabel\":\"데이터 크기\"}},{\"id\":\"7\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"nginx.access.user_agent.os\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":2,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"os\"}}]}", "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b8c6bd20-87db-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" } } } ] ================================================ FILE: Install/object/shopping-dashboard.json ================================================ [ { "_id": "AV-a4D_kMbjMXoGxGOm2", "_type": "dashboard", "_source": { "title": "shopping", "hits": 0, "description": "", "panelsJSON": "[{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 7\":\"rgb(255,255,204)\",\"14 - 21\":\"rgb(253,141,60)\",\"21 - 28\":\"rgb(227,27,28)\",\"7 - 14\":\"rgb(254,217,118)\"},\"legendOpen\":false}},\"gridData\":{\"h\":4,\"i\":\"19\",\"w\":6,\"x\":6,\"y\":7},\"id\":\"AWJdhp4tzMQVnr-9MxxP\",\"panelIndex\":\"19\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"gridData\":{\"h\":4,\"i\":\"20\",\"w\":6,\"x\":0,\"y\":14},\"id\":\"AWJdii5xzMQVnr-9MxxQ\",\"panelIndex\":\"20\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"mapCenter\":[36.54494944148322,128.199462890625],\"mapZoom\":6},\"gridData\":{\"h\":4,\"i\":\"21\",\"w\":6,\"x\":6,\"y\":3},\"id\":\"AWJgEGqCzMQVnr-9MxxW\",\"panelIndex\":\"21\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"22\",\"w\":9,\"x\":0,\"y\":0},\"id\":\"AWJglBU6zMQVnr-9Mxxa\",\"panelIndex\":\"22\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":4,\"i\":\"24\",\"w\":6,\"x\":0,\"y\":3},\"id\":\"AWJgsNh9zMQVnr-9Mxxe\",\"panelIndex\":\"24\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}},\"gridData\":{\"h\":3,\"i\":\"25\",\"w\":3,\"x\":9,\"y\":0},\"id\":\"AWJguWqpzMQVnr-9Mxxg\",\"panelIndex\":\"25\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":4,\"i\":\"26\",\"w\":6,\"x\":0,\"y\":7},\"id\":\"AWJgycpEzMQVnr-9Mxxi\",\"panelIndex\":\"26\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"27\",\"w\":6,\"x\":0,\"y\":11},\"id\":\"AWJg0q4CzMQVnr-9Mxxk\",\"panelIndex\":\"27\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"28\",\"w\":6,\"x\":6,\"y\":11},\"id\":\"AWJg1XpWzMQVnr-9Mxxl\",\"panelIndex\":\"28\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}},\"gridData\":{\"h\":4,\"i\":\"29\",\"w\":12,\"x\":0,\"y\":18},\"id\":\"AWJg1wbTzMQVnr-9Mxxm\",\"panelIndex\":\"29\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(165,0,38)\",\"1 - 2\":\"rgb(249,142,82)\",\"2 - 3\":\"rgb(255,255,190)\",\"3 - 4\":\"rgb(135,203,103)\",\"4 - 5\":\"rgb(0,104,55)\"}}},\"gridData\":{\"h\":4,\"i\":\"30\",\"w\":6,\"x\":6,\"y\":14},\"id\":\"AWJg3QUCzMQVnr-9Mxxo\",\"panelIndex\":\"30\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"31\",\"w\":12,\"x\":0,\"y\":22},\"id\":\"AWGI8fjSPloSIAlpOE6c\",\"panelIndex\":\"31\",\"type\":\"visualization\",\"version\":\"6.2.4\"}]", "optionsJSON": "{\"darkTheme\":false,\"useMargins\":false}", "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":{\"match_all\":{}}}}" } } } ] ================================================ FILE: Install/object/shopping-visualizations.json ================================================ [ { "_id": "AV_Fp61Dju5h0m3erKmP", "_type": "visualization", "_source": { "title": "shopping_timelion_2", "visState": "{\"title\":\"shopping_timelion_2\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=shopping, timefield=주문시간, metric=sum:상품가격).label('올해 매출').range(0, 1), .es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y).label('작년 매출').color(#00b8ff).range(0, 1), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).subtract(.es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y)).if(gte, 50000, .es(index=shopping, timefield=주문시간, metric=sum:상품가격), null).lines(fill=5, width=2).color(#fd8282).label('전년 대비 50,000 이상 상승 구간').yaxis(label=매출).range(0, 1)\",\"interval\":\"1d\",\"type\":\"timelion\"},\"aggs\":[],\"listeners\":{}}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJglBU6zMQVnr-9Mxxa", "_type": "visualization", "_source": { "title": "[shopping] markdown", "visState": "{\"title\":\"[shopping] markdown\",\"type\":\"markdown\",\"params\":{\"type\":\"markdown\",\"markdown\":\"### Elastic Stack을 활용한 Data Dashboard 만들기 CAMP\\n---\\n* [강의자료](https://github.com/higee/elastic)\\n* [강의질문](https://www.facebook.com/groups/FCElasticStack/)\\n* [Markdown문법](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)\",\"fontSize\":12},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWGI8fjSPloSIAlpOE6c", "_type": "visualization", "_source": { "title": "[shopping] Timelion", "visState": "{\"title\":\"[shopping] Timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=shopping, timefield=주문시간, metric=sum:상품가격).label('올해 매출'), .es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y).label('작년 매출').color(#00b8ff), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).subtract(.es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y)).if(gte, 50000, .es(index=shopping, timefield=주문시간, metric=sum:상품가격), null).lines(fill=5, width=2).color(#fd8282).label('전년 대비 50,000 이상 상승 구간').yaxis(label=매출).legend(position=ne)\",\"interval\":\"1d\",\"type\":\"timelion\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg1wbTzMQVnr-9Mxxm", "_type": "visualization", "_source": { "title": "[shopping] Data Table", "visState": "{\"title\":\"[shopping] Data Table\",\"type\":\"table\",\"params\":{\"perPage\":30,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"type\":\"table\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품가격\",\"customLabel\":\"매출\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"주문시간\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"구매사이트\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"사이트\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"결제카드\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"카드\"}}]}", "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgsNh9zMQVnr-9Mxxe", "_type": "visualization", "_source": { "title": "[shopping] Tag Cloud", "visState": "{\"title\":\"[shopping] Tag Cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"type\":\"tagcloud\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"구매사이트\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg3QUCzMQVnr-9Mxxo", "_type": "visualization", "_source": { "title": "[shopping] Goal", "visState": "{\"title\":\"[shopping] Goal\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Yellow to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":1},{\"from\":1,\"to\":2},{\"from\":2,\"to\":3},{\"from\":3,\"to\":4},{\"from\":4,\"to\":5}],\"invertColors\":true,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}},\"isDisplayWarning\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"판매자평점\",\"aggregate\":\"average\",\"size\":10,\"sortField\":\"상품가격\",\"sortOrder\":\"desc\",\"customLabel\":\"연령별 VIP 평점\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"연령대\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"order\":\"asc\",\"orderBy\":\"_term\"}}]}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(128,0,38)\",\"1 - 2\":\"rgb(227,27,28)\",\"2 - 3\":\"rgb(253,141,60)\",\"3 - 4\":\"rgb(254,217,118)\",\"4 - 5\":\"rgb(255,255,204)\"}},\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgycpEzMQVnr-9Mxxi", "_type": "visualization", "_source": { "title": "[shopping] Pie Chart", "visState": "{\"title\":\"[shopping] Pie Chart\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"type\":\"pie\",\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"판매자평점\",\"aggregate\":\"average\",\"size\":5,\"sortField\":\"판매자평점\",\"sortOrder\":\"desc\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"split\",\"params\":{\"field\":\"배송소요시간\",\"interval\":24,\"extended_bounds\":{},\"row\":false}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"고객주소_시도\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"orderAgg\":{\"id\":\"2-orderAgg\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"orderAgg\",\"params\":{\"field\":\"배송소요시간\"}},\"order\":\"desc\",\"orderBy\":\"custom\"}}]}", "uiStateJSON": "{\"vis\":{\"colors\":{\"인천광역시\":\"#962D82\"},\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgEGqCzMQVnr-9MxxW", "_type": "visualization", "_source": { "title": "[shopping] Region Map", "visState": "{\"title\":\"[shopping] Region Map\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"name\":\"Korea City\",\"url\":\"https://s3.ap-northeast-2.amazonaws.com/higee-map/korea.geojson\",\"fields\":[{\"name\":\"name\",\"description\":\"City name\"}],\"format\":{\"type\":\"geojson\"},\"meta\":{\"feature_collection_path\":\"data\"},\"layerId\":\"self_hosted.Korea City\"},\"selectedJoinField\":{\"name\":\"name\",\"description\":\"City name\"},\"type\":\"region_map\",\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":1,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"고객주소_시도\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{\"mapZoom\":7,\"mapCenter\":[36.071302299422406,128.21594238281253],\"spy\":null}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgoeObzMQVnr-9Mxxc", "_type": "visualization", "_source": { "title": "shopping_coordinates", "visState": "{\"title\":\"shopping_coordinates\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatMaxZoom\":0,\"heatMinOpacity\":0.1,\"heatRadius\":25,\"heatBlur\":15,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"url\":\"https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer\",\"options\":{\"version\":\"1.3.0\",\"layers\":\"0\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"Maps provided by USGS\",\"styles\":\"\"}},\"type\":\"tile_map\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"물건좌표\",\"autoPrecision\":true,\"useGeocentroid\":true,\"precision\":2}}],\"listeners\":{}}", "uiStateJSON": "{\"mapZoom\":9,\"mapCenter\":[36.52619126653696,127.91244506835936]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJguWqpzMQVnr-9Mxxg", "_type": "visualization", "_source": { "title": "[shopping] metrics", "visState": "{\"title\":\"[shopping] metrics\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"colorSchema\":\"Green to Red\",\"useRange\":false,\"colorsRange\":[{\"from\":0,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"style\":{\"fontSize\":60,\"bgColor\":false,\"labelColor\":false,\"subText\":\"\"},\"metricColorMode\":\"None\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"전체 데이터\"}}]}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJdii5xzMQVnr-9MxxQ", "_type": "visualization", "_source": { "title": "[shopping] Area Chart", "visState": "{\"title\":\"[shopping] Area Chart\",\"type\":\"area\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"주문시간\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"주문개수\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"주문개수\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"area\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품개수\",\"customLabel\":\"주문개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"주문시간\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"주문시간\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"고객성별\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg1XpWzMQVnr-9Mxxl", "_type": "visualization", "_source": { "title": "[shopping] Horizontal Bar", "visState": "{\"title\":\"[shopping] Horizontal Bar\",\"type\":\"histogram\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{\"text\":\"판매자평점\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"매출\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"매출\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"horizontal_bar\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품가격\",\"customLabel\":\"매출\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"판매자평점\",\"interval\":1,\"extended_bounds\":{}}}]}", "uiStateJSON": "{\"vis\":{\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJdhp4tzMQVnr-9MxxP", "_type": "visualization", "_source": { "title": "[shopping] Heat Map", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"주문요일\",\"field\":\"주문시간_요일\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"asc\",\"orderAgg\":{\"enabled\":true,\"id\":\"2-orderAgg\",\"params\":{\"field\":\"주문시간_요일_sort\"},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!median\",\"!std_dev\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\",\"!avg_bucket\",\"!max_bucket\",\"!min_bucket\",\"!sum_bucket\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"hideCustomLabel\":true,\"max\":null,\"min\":0,\"name\":\"orderAgg\",\"params\":[],\"title\":\"Order Agg\"},\"type\":\"max\"},\"orderBy\":\"custom\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":7},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"extended_bounds\":{},\"field\":\"주문시간_시간대\",\"interval\":1},\"schema\":\"group\",\"type\":\"histogram\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":4,\"colorsRange\":[],\"enableHover\":false,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"title\":\"[shopping] Heat Map\",\"type\":\"heatmap\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 45\":\"rgb(255,255,204)\",\"45 - 90\":\"rgb(254,217,118)\",\"90 - 135\":\"rgb(253,141,60)\",\"135 - 180\":\"rgb(227,27,28)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg0q4CzMQVnr-9Mxxk", "_type": "visualization", "_source": { "title": "[shopping] Line Chart", "visState": "{\"title\":\"[shopping] Line Chart\",\"type\":\"line\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"주문시간\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Standard Deviation of 배송소요시간\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"Standard Deviation of 배송소요시간\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":true,\"type\":\"line\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"std_dev\",\"schema\":\"metric\",\"params\":{\"field\":\"배송소요시간\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"주문시간\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"주문시간\"}}]}", "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}},\"vis\":{\"legendOpen\":false,\"colors\":{\"Lower Standard Deviation of 배송소요시간\":\"#B7DBAB\",\"Upper Standard Deviation of 배송소요시간\":\"#65C5DB\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"7435c580-9fb8-11e8-9edd-ff0dadde764f\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } } ] ================================================ FILE: README.md ================================================ ### Elastic Stack을 활용한 Dashboard 만들기 --- #### 안내 * 이 repository는 지속적으로 업데이트가 진행된다. (`<>Code`, `Issues`, `Wiki`) * `branch`는 [Fast Campus](http://www.fastcampus.co.kr/data_camp_dsbd/) 강의 기수에 맞춰져 있다. * Elastic Stack Version 별로 자료가 필요하면 [Release](https://github.com/higee/elastic/releases)에서 다운 받으면 된다. * repository 요소별 안내 * `Code` : Elastic Stack 흐름에 관한 전반적인 설명 * `Issues` : 자주 들어온 질문 정리 * `Wiki` : Elastic Stack 사용법에 초점을 맞춘 간단 사용 설명서 #### 설치 * AWS EC2에 접속 하는 경우를 제외하고는 Windows 및 Mac OS 공통 * 아래 내용의 동영상이며 영상 속 코드를 복사할 수도 있다. [](https://asciinema.org/a/176392) ---- #### 0. AWS EC2 설정 * AMI : `Amazon Linux 2 LTS Candidate 2 AMI (HVM), SSD Volume Type - ami-96b916f8` * Security Group | Type | Protocol | Port Range | Source | Description | :------------- |:-------------:| :-----:| :----: | :---| | SSH | TCP | 22 | Custom 0.0.0.0/0 | ssh | Custom TCP | TCP | 9200 | Custom 0.0.0.0/0 | elasticsearch REST | Custom TCP | TCP | 9300 | Custom 0.0.0.0/0 | elasticsearch node communication | Custom TCP | TCP | 5601 | Custom 0.0.0.0/0 | kibana #### 1. AWS EC2 접속 * Mac OS * elastic_camp.pem를 Home directory에 다운 받고 Home으로 이동 * 예를 들어 ip 주소가 12.345.678.123인 경우 ``` $ cd ~ $ chmod 400 elastic_camp.pem $ ssh -i "elastic_camp.pem" ec2-user@12.345.678.123 ``` * Windows : [클릭](https://github.com/higee/elastic/wiki/AWS-EC2-Instance-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EC%A0%91%EC%86%8D#connect-windows) #### 2. virtual memory areas 늘리기 * 설명 * Elasticsearch는 mmapfs 디렉토리에 index를 저장한다 (default 설정) * mmap counts에 대한 운영체제의 limit이 default로는 낮게 되어 있어서 높혀주지 않으면 out of memory 발생 * 방법 * `$ sudo vim /etc/sysctl.conf` * 가장 아래 라인으로 이동 : `shift + g` 입력 * 새로운 라인으로 편집 모드 : `o` 입력 * 다음과 같이 입력 `vm.max_map_count=262144` * 저장 : `ESC` 누르고 `:wq` 입력 후 `Enter` * 재시작 : `$ sudo reboot` #### 3. docker 설치 * 약 1분 후에 [AWS EC2 접속](#ec2)와 같은 방법으로 재접속한다 * docker 설치 및 현재 유저로도 실행할 수 있도록 설정 ``` $ sudo yum install docker -y $ sudo usermod -aG docker $USER $ exit ``` * [AWS EC2 접속](#ec2)와 같은 방법으로 재접속 * docker 구동 ```$ sudo service docker start``` #### 4. docker-compse 설치 및 실행 가능하게 설정 ``` $ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ``` #### 5. git 설치 및 repo clone * git을 설치하고 본 repository를 clone 받는다 * elastic stack 설치에 필요한 스크립트 및 자료를 미리 올려두었다 ``` $ sudo yum install git -y $ git clone -b class5 https://github.com/higee/elastic.git $ cd /home/ec2-user/elastic/Install/config ``` #### 6. 파일 소유권 변환 ``` $ sudo chown -R 1000:1000 /home/ec2-user/elastic/ ``` #### 7. elastic stack 실행 * 다운 받은 docker-compose.yml에 설치 및 실행에 필요한 모든 정보가 들어있다. * 수업 후에 환경에 맞게 customize하고 우선은 default 상태로 실행하자 * foreground에서 실행하고 log를 확인하자 ``` $ docker-compose up ``` * log를 확인했으면 `ctrl+c`로 중단하고 detached mode로 실행하자 ``` $ docker-compose up -d ``` #### 8. logstash 실행 * logstash container 실행 : `$ docker exec -it logstash bash` * permission error 생길 경우 root로 실행 : `$ docker exec -u 0 -it logstash bash` * logstash 실행 * 편의상 configuraiton 파일도 모두 volume 형태로 mount 해두었다 * 실행하고 싶은 scenario를 [여기](https://github.com/higee/elastic/blob/class5/Week5_Logstash/code/logstash.md)에서 찾아서 실행하자 * 예를 들어 아래와 같이 하면 파일 데이터를 수집하는 logstash를 실행한다 ``` $ bin/logstash -f code/input/file/file-sincedb-path.conf ``` #### 9. Kibana 접속 * 예를 들어 ip 주소가 12.345.678.123인 경우 : `http://12.345.678.123:5601` * docker-compose에서 port를 변경해주면 `80번` 혹은 `443번` 포트 등을 사용할 수 있다 --- #### 기타 * 내용에 대한 피드백(틀린 내용, 설명의 애매함, version upgrade 등)은 언제든지 편하게 알려주세요. * 데이터는 랜덤으로 생성했으니 참고 바랍니다. ================================================ FILE: Week1_Kibana/code/es_conf.py ================================================ properties = { "properties": { "접수번호" : {"type": "integer"}, "주문시간" : {"type" : "date"}, "수령시간" : {"type" : "date"}, "예약여부" : {"type" : "keyword"}, "배송메모" : {"type" : "text"}, "고객ip" : {"type" : "ip"}, "고객성별" : {"type" : "keyword"}, "고객나이" : {"type" : "integer"}, "물건좌표" : {"type" : "geo_point"}, "고객주소_시도" : {"type" : "keyword"}, "구매사이트" : {"type" : "keyword"}, "판매자평점" : {"type" : "integer"}, "상품분류" : {"type" : "keyword"}, "상품가격" : {"type" : "integer"}, "상품개수" : {"type" : "integer"}, "결제카드" : {"type" : "keyword"} } } ================================================ FILE: Week1_Kibana/code/fake.py ================================================ import datetime import socket import random import struct from elasticsearch import Elasticsearch def fake_data(es, name, n): x = ['예약', '일반'] y = [1, 2, 3, 4, 5] prob = [0.1, 0.9] probs_sex = [0.45, 0.55] probs = [0.3, 0.1, 0.3, 0.2, 0.1] probs_memo = [0.3, 0.1, 0.3, 0.12, 0.1, 0.05, 0.03] probs_month = [0.2, 0.1, 0.05, 0.05, 0.07, 0.03, 0.02, 0.02, 0.16, 0.05, 0.1, 0.15] probs_city = [0.3, 0.08, 0.03, 0.06, 0.07, 0.08, 0.03, 0.09, 0.063, 0.0205, 0.0305, 0.03, 0.05, 0.03, 0.001, 0.03, 0.005] for i in range(1, n+1): doc = dict() # 접수번호 order = i # 접수시간 year = random.choice(range(2017, 2019)) month = random.choices(range(1, 13), weights=probs_month, k=1)[0] if month in [1, 3, 5, 7, 8, 10, 12]: day = random.choice(range(1, 32)) elif month in [4, 6, 9, 11]: day = random.choice(range(1, 31)) elif month == 2: day = random.choice(range(1, 29)) hour = random.choice(range(0, 24)) minute = random.choice(range(0, 60)) second = random.choice(range(0, 60)) try: date = datetime.datetime(year, month, day, hour, minute, second) except ValueError as e: print(month, day, e) delta_days = random.choices(range(0, 5), weights=probs, k=1)[0] delta_hours = random.choice(range(0, 23)) delta_minutes = random.choice(range(0, 59)) delivery_date = date + datetime.timedelta(days=delta_days, hours=delta_hours, minutes=delta_minutes) # 예약여부 reserve = random.choices(x, weights=prob, k=1)[0] # 배송메모 memos = ['부재중', '관리실에 맡김', '상품 이상', '주소 오류', '환불 요청', '무인택배함에 보관', '시간 내에 배송 못함'] memo = random.choices(memos, weights=probs_memo, k=1)[0] # 고객ip ip = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff))) # 고객 성별 sex = random.choices(['남성','여성'], weights=probs_sex, k=1)[0] # 고객 나이 age = random.choice(range(17, 65)) # 물건 좌표 x_ = random.choice(range(35, 37)) + random.random() y_ = random.choice(range(126, 129)) + random.random() loc = "{}, {}".format(x_, y_) cities = ["서울특별시", "경상남도", "경상북도", "전라남도", "전라북도", "충청남도", "충청북도", "세종특별자치시", "강원도", "경기도", "울산광역시", "대전광역시", "광주광역시", "인천광역시", "대구광역시", "부산광역시", "제주특별자치도"] city = random.choices(cities, weights=probs_city, k=1)[0] # 구매 사이트 site = random.choices(['11번가', '옥션', 'g마켓', '쿠팡', '위메프', '티몬', 'GS샵'], weights=probs_memo, k=1)[0] # 판매자 평점 rate = random.choices(y, weights=probs, k=1)[0] # 상품 분류 if sex == '남성': item = random.choice(['청바지','점퍼','자켓','베스트','팬츠','셔츠', '수트','코트','남방','스웨터','티셔츠','가디건','니트']) elif sex == '여성': item = random.choice(['청바지', '자켓','팬츠','셔츠','원피스','스커트','코트','스웨터','티셔츠','가디건','니트','블라우스']) # 상품 가격 price = random.choice(range(5000, 30000, 1000)) # 상품 개수 quantity = random.choice([1, 7]) # 결제 카드 card = random.choices(['우리', '신한', '국민', '하나', '롯데', '시티', '삼성'], weights=probs_memo, k=1)[0] doc['접수번호'] = i doc['주문시간'] = date doc['수령시간'] = delivery_date doc['예약여부'] = reserve doc['배송메모'] = memo doc['고객ip'] = ip doc['고객성별'] = sex doc['고객나이'] = age doc['물건좌표'] = loc doc['고객주소_시도'] = city doc['구매사이트'] = site doc['판매자평점'] = rate doc['상품분류'] = item doc['상품가격'] = price doc['상품개수'] = quantity doc['결제카드'] = card es.index(index=name, doc_type=name, body=doc) ================================================ FILE: Week1_Kibana/code/insert.py ================================================ import os import sys import socket import struct import random import datetime from elasticsearch import Elasticsearch from fake import fake_data from es_conf import properties def main(): ''' sys.argv[1] : 데이터 개수 sys.argv[2] : index postfix ''' # 1. es driver/client 연결 host = os.environ['fastcampus'] es = Elasticsearch(host) # 2. 수강생 데이터 읽어서 이름 생성 with open('./email.txt', 'r') as f: mails = [s.strip() for s in f.readlines()] try: postfix = sys.argv[2] mail_list = [x.split('@')[0] + '_{}'.format(postfix) for x in mails] except IndexError: mail_list = [x.split('@')[0] for x in mails] for idx, name in enumerate(mail_list): # 3. mapping 생성 if not es.indices.exists(name): es.indices.create(name) mapping = {name : properties} es.indices.put_mapping( index=name, doc_type=name, body=mapping ) # 4. 데이터 삽입 n = int(sys.argv[1]) fake_data(es, name, n) print('수강생 {}님의 데이터 {}개가 인덱스 {}에 정상적으로 입력되었습니다.'.format( mails[idx].split('@')[0], n, mail_list[idx] ) ) print('-'*70) print('총 {} 명의 데이터가 입력되었습니다.'.format(len(mail_list))) print('-'*70) if __name__ == "__main__": main() ================================================ FILE: Week2_Kibana/code/timelion/all ================================================ # index .es(index=nginx-*) # timefield .es(index=nginx-*, timefield=@timestamp) # metric .es(index=nginx-*, timefield=@timestamp, metric=sum:nginx.access.body_sent.bytes) # query .es(index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200) # multi .es(index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes).color(#00b8ff), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).color(#fd8282) # label .es(index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes).color(#00b8ff).label(nginx), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).color(#fd8282).label(shopping) # divide .es(index=nginx-*, timefield=@timestamp, q=-nginx.access.response_code:200).divide(.es(index=nginx-*, timefield=@timestamp, metric=count)).label(에러비율) # offset .es(index=nginx-*, timefield=@timestamp, metric=count).label(현재).color(#00b8ff), .es(index=nginx-*, timefield=@timestamp, metric=count, offset=-1w).label(1주전).color(#fd8282) # range .es(index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200).label(에러).range(0, 1) # scale interval .es(index=nginx-*, timefield=@timestamp, metric=count).scale_interval(1m) # if .es(index=nginx-*, timefield=@timestamp, metric=count).if(gte, 50, .es(index=nginx-*, timefield=@timestamp, metric=count), null) ================================================ FILE: Week2_Kibana/code/timelion/exercise ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=count ).label(50이하), .es( index=nginx-*, timefield=@timestamp, metric=count ).if( gte, 50, .es( index=nginx-*, timefield=@timestamp, metric=count), null ).label(50이상) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count).label(50이하), .es(index=nginx-*, timefield=@timestamp, metric=count).if(gte, 50, .es(index=nginx-*, timefield=@timestamp, metric=count), null).label(50이상) ================================================ FILE: Week2_Kibana/code/timelion/tl10_scale_interval ================================================ # redable code .es( index=nginx-*, timefield=@timestamp, metric=count ).scale_interval(1m) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count).scale_interval(1m) ================================================ FILE: Week2_Kibana/code/timelion/tl11_if ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=count ).if( gte, 50, .es( index=nginx-*, timefield=@timestamp, metric=count), null ) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count).if(gte, 50, .es(index=nginx-*, timefield=@timestamp, metric=count), null) ================================================ FILE: Week2_Kibana/code/timelion/tl1_index ================================================ # timelion code .es(index=nginx-*) ================================================ FILE: Week2_Kibana/code/timelion/tl2_timefield ================================================ # readable code .es( index=nginx-*, timefield=@timestamp ) # timelion code .es(index=nginx-*, timefield=@timestamp) ================================================ FILE: Week2_Kibana/code/timelion/tl3_query ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200 ) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200) ================================================ FILE: Week2_Kibana/code/timelion/tl4_metric ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=sum:nginx.access.body_sent.bytes ) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=sum:nginx.access.body_sent.bytes) ================================================ FILE: Week2_Kibana/code/timelion/tl5_indices ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes ).color(#00b8ff), .es( index=shopping, timefield=주문시간, metric=sum:상품가격 ).color(#fd8282) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes).color(#00b8ff), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).color(#fd8282) ================================================ FILE: Week2_Kibana/code/timelion/tl6_label ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes ).color(#00b8ff).label(nginx), .es( index=shopping, timefield=주문시간, metric=sum:상품가격 ).color(#fd8282).label(shopping) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=avg:nginx.access.body_sent.bytes).color(#00b8ff).label(nginx), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).color(#fd8282).label(shopping) ================================================ FILE: Week2_Kibana/code/timelion/tl7_divide ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, q=-nginx.access.response_code:200 ).divide( .es( index=nginx-*, timefield=@timestamp, metric=count ) ).label(성비) # timelion code .es(index=nginx-*, timefield=@timestamp, q=-nginx.access.response_code:200).divide(.es(index=nginx-*, timefield=@timestamp, metric=count)).label(에러비율) ================================================ FILE: Week2_Kibana/code/timelion/tl8_offset ================================================ # readable code .es( index=nginx-*, timefield=@timestamp, metric=count ).label(현재).color(#00b8ff), .es( index=nginx-*, timefield=@timestamp, metric=count, offset=-1w ).label(1주전).color(#fd8282) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count).label(현재).color(#00b8ff), .es(index=nginx-*, timefield=@timestamp, metric=count, offset=-1w).label(1주전).color(#fd8282) ================================================ FILE: Week2_Kibana/code/timelion/tl9_range ================================================ # redable code .es( index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200 ).label(에러).range(0, 1) # timelion code .es(index=nginx-*, timefield=@timestamp, metric=count, q=nginx.access.response_code:200).label(에러).range(0, 1) ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/all ================================================ # keyword 우리 # Field Match 결제카드:우리 # Exact Field Match 배송메모:"상품 이상" # Term 상품분류: ("니트" "코트") # Fuzzy 고객주소_시도:전라도~1 # Proximity 배송메모: "내에 시간 배송 못함"~2 # Numeric 상품가격:>5000 # Range 고객나이: [10 TO 30} # Wildcard (?) 고객주소_시도:전라?도 # Wildcard (*) 상품\*:셔츠 # OR 고객성별:여성 OR 상품분류:셔츠 # AND 고객성별:여성 AND 상품분류:셔츠 # NOT NOT 구매사이트:옥션 # + +예약여부:예약 # - -구매사이트:11번가 # +/- 여성 셔츠 +예약 -11번가 # exercise +_exists_: nginx.access.geoip.region_name +nginx.access.geoip.city_name: Se* -nginx.access.response_code: ("200", "405") nginx.access.method: POST ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/and ================================================ 고객성별:여성 AND 상품분류:셔츠 고객성별:여성 && 상품분류:셔츠 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/compound ================================================ 여성 셔츠 +예약 -11번가 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/exact_field_match ================================================ 배송메모:"상품 이상" ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/exercise ================================================ +_exists_: nginx.access.geoip.region_name +nginx.access.geoip.city_name: Se* -nginx.access.response_code: ("200", "405") nginx.access.method: POST ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/field_match ================================================ 결제카드:우리 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/fuzzy ================================================ 고객주소_시도:전라도~1 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/keyword ================================================ 우리 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/negative ================================================ -구매사이트:11번가 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/not ================================================ NOT 구매사이트:옥션 !구매사이트:옥션 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/numeric ================================================ 상품가격:>5000 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/or ================================================ 고객성별:여성 OR 상품분류:셔츠 고객성별:여성 || 상품분류:셔츠 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/positive ================================================ +예약여부:예약 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/proximity ================================================ 배송메모: "내에 시간 배송 못함"~2 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/range ================================================ 고객나이: [10 TO 30} ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/term ================================================ 상품분류: ("니트" "코트") ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/wildcard_1 ================================================ 고객주소_시도:전라?도 ================================================ FILE: Week3_Kibana/code/lucene_query_syntax/wildcard_2 ================================================ 상품\*:셔츠 ================================================ FILE: Week3_Kibana/code/scripted_field/arithmetic_operation_1 ================================================ (doc['수령시간'].value.getMillis()-doc['주문시간'].value.getMillis())/1000/60/60 ================================================ FILE: Week3_Kibana/code/scripted_field/arithmetic_operation_2 ================================================ doc['상품가격'].value * doc['상품개수'].value ================================================ FILE: Week3_Kibana/code/scripted_field/concat_1 ================================================ doc['고객성별'].value + '-' + doc['결제카드'].value ================================================ FILE: Week3_Kibana/code/scripted_field/date_1 ================================================ doc['주문시간'].date.hourOfDay ================================================ FILE: Week3_Kibana/code/scripted_field/date_2 ================================================ doc['주문시간'].date.dayOfWeek ================================================ FILE: Week3_Kibana/code/scripted_field/date_3 ================================================ # option 1 LocalDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getHour() # option 2 ZonedDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getHour() # option 3 Instant.ofEpochMilli(doc['주문시간'].date.millis).atZone(ZoneId.of("Asia/Seoul")).hour ================================================ FILE: Week3_Kibana/code/scripted_field/date_4 ================================================ # option 1 LocalDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getDayOfWeek() # option 2 ZonedDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getDayOfWeek() # option 3 Instant.ofEpochMilli(doc['주문시간'].date.millis).atZone(ZoneId.of("Asia/Seoul")).dayOfWeek ================================================ FILE: Week3_Kibana/code/scripted_field/date_5 ================================================ Instant.ofEpochMilli(doc['주문시간'].date.millis).atZone(ZoneId.of("Asia/Seoul")).dayOfWeek.getValue() ================================================ FILE: Week3_Kibana/code/scripted_field/if_1 ================================================ if (doc['고객나이'].value < 20) { return "10대" } else if (doc['고객나이'].value < 40) { return "20~30대" } else { return "40대 이상" } ================================================ FILE: Week3_Kibana/code/scripted_field/if_2 ================================================ if (doc['상품개수'].value < 3) { return "저소비" } else if (doc['고객나이'].value < 6) { return "평균" } else { return "과소비" } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/array/indexing ================================================ POST array/array { "결제카드" : ["씨티", "국민"], "고객성별" : "여성", "상품" : [ { "구매사이트" : "쿠팡", "분류" : "셔츠" }, { "구매사이트" : "11번가", "분류" : "팬츠" } ] } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/array/mapping ================================================ PUT array { "mappings": { "array": { "properties": { "결제카드": { "type": "keyword" }, "고객성별": { "type": "keyword" }, "상품": { "properties": { "구매사이트": { "type": "keyword" }, "분류": { "type": "keyword" } } } } } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/array/search ================================================ GET /array/_search { "query": { "bool": { "must": [ { "match": { "상품.구매사이트": "11번가" } }, { "match": { "상품.분류": "셔츠" } } ] } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/nested/indexing ================================================ POST nested/nested { "결제카드" : ["씨티", "국민"], "고객성별" : "여성", "상품" : [ { "구매사이트" : "쿠팡", "분류" : "셔츠" }, { "구매사이트" : "11번가", "분류" : "팬츠" } ] } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/nested/mapping ================================================ PUT nested { "mappings": { "nested": { "properties": { "결제카드": { "type": "keyword" }, "고객성별": { "type": "keyword" }, "상품": { "type": "nested", "properties": { "구매사이트": { "type": "keyword" }, "분류": { "type": "keyword" } } } } } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/nested/search_1 ================================================ GET /nested/_search { "query": { "nested": { "path": "상품", "query": { "bool": { "must": [ { "match" : { "상품.구매사이트" : "11번가" } }, { "match" : { "상품.분류" : "셔츠" } } ] } } } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/nested/search_2 ================================================ GET /nested/_search { "query": { "nested": { "path": "상품", "query": { "bool": { "must": [ { "match" : { "상품.구매사이트" : "11번가" } }, { "match" : { "상품.분류" : "팬츠" } } ] } } } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/object/indexing ================================================ POST shopping/shopping { "고객주소_시도": "서울특별시", "상품": { "가격": 27000, "분류": "팬츠", "개수": 7 } } ================================================ FILE: Week4_Elasticsearch/code/data-type/complex/object/mapping ================================================ PUT object { "mappings": { "object": { "properties": { "고객주소_시도": { "type": "keyword" }, "상품": { "properties": { "가격": { "type": "integer" }, "분류": { "type": "keyword" }, "개수": { "type": "integer" }, } } } } } } } } ================================================ FILE: Week4_Elasticsearch/code/data-type/core/float ================================================ PUT my_index { "mappings": { "my_type": { "properties": { "test-double": { "type": "double" }, "test-half-float": { "type": "half_float" } } } } } POST my_index/my_type { "test-double" : 3.1, "test-half-float" : 3.1 } POST my_index/my_type { "test-double" : 3.111111, "test-half-float" : 3.111111 } POST my_index/my_type { "test-double" : 3.11111122222, "test-half-float" : 3.11111122222 } GET /my_index/_search { "query" : { "range": { "test-double": { "gte": 3.111111, "lte" : 3.1111112 } } } } GET /my_index/_search { "query" : { "range": { "test-half-float": { "gte": 3.111111, "lte" : 3.1111112 } } } } GET /my_index/_search { "query": { "match_all": {} } } GET /my_index/_search { "query": { "match_all": {} }, "docvalue_fields": [ "test-double", "test-half-float" ] } ================================================ FILE: Week4_Elasticsearch/code/data-type/core/numeric ================================================ PUT my_index { "mappings": { "my_type": { "properties": { "test": { "type": "byte" } } } } } POST my_index/my_type { "test" : 129 } ================================================ FILE: Week4_Elasticsearch/code/data-type/core/string ================================================ PUT my_index { "mappings": { "my_type": { "properties": { "test-keyword": { "type": "keyword" }, "test-text": { "type": "text" } } } } } POST my_index/my_type { "test-keyword" : "패스트캠퍼스 엘라스틱서치", "test-text" : "패스트캠퍼스 엘라스틱서치" } GET /my_index/_search { "query": { "term": { "test-keyword": "패스트캠퍼스" } } } GET /my_index/_search { "query": { "term": { "test-text": "패스트캠퍼스" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/add-document-post ================================================ POST week4_higee/week4_higee { "price" : 5000, "age" : 19 } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/add-document-put ================================================ PUT week4_higee/week4_higee/1 { "price" : 10000, "age" : 17 } PUT week4_higee/week4_higee/2 { "price" : 2000, "age" : 20 } PUT week4_higee/week4_higee/3 { "price" : 1000, "age" : 25 } PUT week4_higee/week4_higee/4 { "price" : 7000, "age" : 33 } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/check-document-id ================================================ GET /week4_higee/week4_higee/1 ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/delete-document-id ================================================ DELETE week4_higee/week4_higee/1 ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/delete-document-query ================================================ POST week4_higee/_delet_by_query { "query" : { "match" : { "age" : 20 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/exercise ================================================ # exercise2-without-mapping index 생성 PUT exercise2-without-mapping # 다음과 같은 Document 생성 (type 이름 : exercise2) POST exercise2-without-mapping/exercise2 { "name" : "elastic stack", "major_version" : 6, "version" : "6.2.4" } # exercise2-without-mapping index의 mapping 확인 GET exercise2-without-mapping/_mapping # index 이름이 exercise2-with-mapping, type 이름이 exercise2인 index를 만들면서 아래와 같은 mapping 생성 PUT exercise2-with-mapping { "mappings": { "exercise2": { "properties": { "name": { "type": "keyword" }, "major_version": { "type": "byte" }, "version": { "type": "keyword" } } } } } # exercise2-without-mapping (source)를 exercise2-with-mapping (destination)로 재색인 POST _reindex { "source": { "index": "exercise2-without-mapping" }, "dest": { "index": "exercise2-with-mapping" } } # exercise2-with-mapping의 mapping 확인 GET exercise2-with-mapping ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/reindex-all-documents ================================================ POST _reindex { "source": { "index": "week4_higee" }, "dest": { "index": "week4_higee_reindex" } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/reindex-some-documents ================================================ POST _reindex { "source": { "index": "week4_higee", "type" : "week4_higee", "query": { "term": { "age": 19 } } }, "dest": { "index": "week4_higee_reindex2" } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/update-document-id-all-fields ================================================ PUT week4_higee/week4_higee/3 { "warning" : "해당 Document 전체 변경" } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/update-document-id-some-fields ================================================ POST week4_higee/week4_higee/3/_update { "doc": { "age" : 50 } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/update-document-query ================================================ POST week4_higee/week4_higee/_update_by_query { "script": { "source": "ctx._source['age'] = 50" }, "query": { "term": { "age": 33 } } } POST week4_higee/week4_higee/_update_by_query { "script": { "source": "ctx._source.age = 70" }, "query": { "term": { "age": 50 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/document/upsert-document ================================================ POST week4_higee/week4_higee/4/_update { "doc" : { "price" : 50000 }, "doc_as_upsert" : true } POST week4_higee/week4_higee/777/_update { "doc" : { "price" : 50000 }, "doc_as_upsert" : true } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/add-mapping ================================================ PUT week4_higee PUT week4_higee/_mapping/week4_higee { "properties": { "age" : { "type" : "integer" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/check-mapping ================================================ GET week4_higee/_mapping ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/check-mapping-template ================================================ PUT higee-log-2018.01.01 GET higee-log-2018.01.01/_mapping ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/create-index ================================================ PUT week4_higee ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-template ================================================ PUT _template/template_higee { "template" : "higee-log-*", "mappings" : { "my_type" : { "properties" : { "price" : { "type" : "integer" }, "time" : { "type" : "date" } } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-with-index ================================================ PUT week4_higee PUT week4_higee/_mapping/week4_higee { "properties" : { "price" : { "type" : "integer" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-without-index ================================================ DELETE week4_higee PUT week4_higee_mapping { "mappings" : { "week4_higee_mapping" : { "properties" : { "price" : { "type" : "integer" }, "time" : { "type" : "date" } } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/delete-index ================================================ DELETE week4_higee ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/indices/exercise ================================================ # shopping index mapping 확인 GET shopping/_mapping # shopping index와 동일한 index 생성 PUT shopping { "mappings": { "shopping": { "properties": { "접수번호": { "type": "integer" }, "주문시간": { "type": "date" }, "수령시간": { "type": "date" }, "예약여부": { "type": "keyword" }, "배송메모": { "type": "text" }, "고객ip": { "type": "ip" }, "고객성별": { "type": "keyword" }, "고객나이": { "type": "integer" }, "물건좌표": { "type": "geo_point" }, "고객주소_시도": { "type": "keyword" }, "구매사이트": { "type": "keyword" }, "판매자평점": { "type": "integer" }, "상품분류": { "type": "keyword" }, "상품가격": { "type": "integer" }, "상품개수": { "type": "integer" }, "결제카드": { "type": "keyword" } } } } } # 환불여부 Field 추가 (Keyword) PUT shopping/_mapping/shopping { "properties": { "환불여부" : { "type" : "keyword" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/from-size ================================================ GET /shopping/_search { "from" : 0, "size" : 1, "query" : { "match_all" : {} } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b ================================================ GET /shopping/_search { "query": { "bool": { "must": [ { "term": { "고객주소_시도": "서울특별시"}}, { "prefix": { "구매사이트" : "11"}} ] } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b-or-c ================================================ GET /shopping/_search { "query": { "bool": { "must": [ { "term": { "고객주소_시도": "서울특별시"}} ], "should": [ { "prefix": { "구매사이트" : "11"}}, { "range": { "고객나이": { "lt": 30}}} ], "minimum_should_match": 1 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b-or-c-or-d ================================================ GET /shopping/_search { "query": { "bool": { "must": [ { "term": { "고객주소_시도": "서울특별시" }} ], "should": [ { "prefix": { "구매사이트" : "11"}}, { "range": { "고객나이": { "lt": 30}}}, { "script": { "script" : { "source" : "Instant.ofEpochMilli(doc['주문시간'].value.millis).atZone(ZoneId.of('Asia/Seoul')).hour > 15"}}} ], "minimum_should_match": 2 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-not-b ================================================ GET /shopping/_search { "query": { "bool": { "must": [ { "term": { "고객주소_시도": "서울특별시" }} ], "must_not": [ { "prefix": { "구매사이트" : "11"}} ] } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-or-b ================================================ GET /shopping/_search { "query": { "bool": { "should": [ { "term": { "고객주소_시도": "서울특별시"}}, { "prefix": { "구매사이트" : "11"}} ], "minimum_should_match": 1 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-example ================================================ GET /shopping/_search { "query": { "bool": { "must": [ { "term" : { "고객주소_시도" : "서울특별시" } } ], “must_not”: [ { "term" : { “상품분류" : "셔츠" } } ], "should": [ { "term": { "결제카드": "시티" } } ], "minimum_should_match": 1 } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Full-text-queries/match ================================================ GET /shopping/_search { "query": { "match": { "배송메모": "배송 못함" } } } GET /shopping/_search { "query": { "match": { "배송메모": "시간 못함" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Full-text-queries/query-string ================================================ GET /shopping/_search { "query" : { "query_string" : { "query": "고객나이 : [10 TO 25]" } } } GET /shopping/_search { "query": { "query_string": { "query": "고객나이 : [10 TO 25] AND 쿠팡", } } } GET /shopping/_search { "query": { "query_string": { "query": "+고객나이 : [10 TO 25] +구매사이트: 쿠팡" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Specialized-queries/script-query ================================================ GET /shopping/_search { "query" : { "script" : { "script" : { "source" : """Instant.ofEpochMilli(doc['주문시간'].value.millis) .atZone(ZoneId.of('Asia/Seoul')).hour > 10""", "lang" : "painless" } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/indexing ================================================ POST ml/doc { "keyword" : "Machine Learning", "text" : "Machine Learning" } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/keyword-match-search ================================================ GET ml/_search { "query": { "match": { "keyword": "machine" } } } GET ml/_search { "query": { "match": { "keyword": "Machine" } } } GET ml/_search { "query": { "match": { "keyword": "machine learning" } } } GET ml/_search { "query": { "match": { "keyword": "Machine Learning" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/keyword-term-search ================================================ GET ml/_search { "query": { "term": { "keyword": "machine" } } } GET ml/_search { "query": { "term": { "keyword": "Machine" } } } GET ml/_search { "query": { "term": { "keyword": "machine learning" } } } GET ml/_search { "query": { "term": { "keyword": "Machine Learning" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/mapping ================================================ PUT ml { "mappings": { "doc": { "properties": { "keyword" : { "type": "keyword" }, "text" : { "type": "text" } } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/text-match-search ================================================ GET ml/_search { "query": { "match": { "text": "machine" } } } GET ml/_search { "query": { "match": { "text": "Machine" } } } GET ml/_search { "query": { "match": { "text": "machine learning" } } } GET ml/_search { "query": { "match": { "text": "Machine Learning" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/text-term-search ================================================ GET ml/_search { "query": { "term": { "text": "machine" } } } GET ml/_search { "query": { "term": { "text": "Machine" } } } GET ml/_search { "query": { "term": { "text": "machine learning" } } } GET ml/_search { "query": { "term": { "text": "Machine Learning" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/exists ================================================ GET /shopping/_search { "query": { "exists" : { "field" : "상품분류" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/fuzzy ================================================ GET /shopping/_search { "query": { "fuzzy" : { "고객주소_시도" : "경상북남" } } } # parameters GET /shopping/_search { "query": { "fuzzy" : { "고객주소_시도" : { "value" : "경상북남", "fuzziness": 2 } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/prefix ================================================ GET /shopping/_search { "query": { "prefix" : { "고객주소_시도" : "경상" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/range ================================================ GET /shopping/_search { "query": { "range": { "주문시간": { "gte": "2017-02-15" } } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/term ================================================ GET /shopping/_search { "query" : { "term" : { "상품분류" : "셔츠" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/terms ================================================ GET /shopping/_search { "query" : { "terms" : { "상품분류" : ["셔츠", "스웨터"] } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/wildcard ================================================ # wildcard : * GET /shopping/_search { "query": { "wildcard" : { "고객주소_시도" : "경*도" } } } # wildcard : ? GET shopping/_search { "query": { "wildcard" : { "고객주소_시도" : "경?도" } } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/match_all ================================================ # type 명시 GET /shopping/shopping/_search { "query" : { "match_all" : {} } } # type 생략 GET /shopping/_search { "query" : { "match_all" : {} } } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/sort ================================================ GET /shopping/_search { "query": { "match_all": {} }, "sort": [ { "판매자평점": { "order": "desc" } } ] } ================================================ FILE: Week4_Elasticsearch/code/elasticsearch_API/search/source ================================================ GET /shopping/_search { "_source": "구매사이트", "query" : { "match_all" : {} } } GET /shopping/_search { "_source": { "includes" : ["고객*", "구매사이트"], "excludes" : "상품*" }, "query" : { "match_all" : {} } } ================================================ FILE: Week4_Elasticsearch/object/dashboard/nginx-dashboard.json ================================================ [ { "_id": "bd2418e0-6f26-11e8-a0fb-51f0eb991705", "_type": "dashboard", "_source": { "title": "nginx", "hits": 0, "description": "", "panelsJSON": "[{\"panelIndex\":\"1\",\"gridData\":{\"x\":0,\"y\":3,\"w\":6,\"h\":3,\"i\":\"1\"},\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 350\":\"rgb(247,252,245)\",\"1,050 - 1,400\":\"rgb(35,139,69)\",\"350 - 700\":\"rgb(199,233,192)\",\"700 - 1,050\":\"rgb(116,196,118)\"},\"legendOpen\":false}},\"id\":\"fe7b9a30-6f20-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"2\",\"gridData\":{\"x\":6,\"y\":3,\"w\":4,\"h\":3,\"i\":\"2\"},\"id\":\"25a7f140-6f20-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"3\",\"gridData\":{\"x\":10,\"y\":3,\"w\":2,\"h\":3,\"i\":\"3\"},\"id\":\"cfbbc570-6f26-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"4\",\"gridData\":{\"x\":0,\"y\":13,\"w\":12,\"h\":4,\"i\":\"4\"},\"embeddableConfig\":{\"mapCenter\":[15.284185114076445,12.128906250000002],\"mapZoom\":2},\"id\":\"7a9123a0-6f27-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"5\",\"gridData\":{\"x\":0,\"y\":9,\"w\":12,\"h\":4,\"i\":\"5\"},\"id\":\"08e28cc0-6f28-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"6\",\"gridData\":{\"x\":0,\"y\":0,\"w\":12,\"h\":3,\"i\":\"6\"},\"id\":\"57d11570-6f2a-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"7\",\"gridData\":{\"x\":0,\"y\":17,\"w\":6,\"h\":3,\"i\":\"7\"},\"id\":\"98a8d0b0-6f2a-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"8\",\"gridData\":{\"x\":6,\"y\":17,\"w\":6,\"h\":3,\"i\":\"8\"},\"id\":\"4b2430e0-6f2b-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"9\",\"gridData\":{\"x\":0,\"y\":20,\"w\":12,\"h\":3,\"i\":\"9\"},\"embeddableConfig\":{\"vis\":{\"colors\":{\"200\":\"#6ED0E0\",\"NOT 200\":\"#F29191\",\"nginx.access.response_code:200\":\"#F29191\"},\"legendOpen\":true}},\"id\":\"c1d84360-6f2c-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"10\",\"gridData\":{\"x\":0,\"y\":23,\"w\":12,\"h\":3,\"i\":\"10\"},\"id\":\"7b3cdde0-6f30-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"12\",\"gridData\":{\"x\":0,\"y\":6,\"w\":12,\"h\":3,\"i\":\"12\"},\"id\":\"de77bd70-6f31-11e8-a0fb-51f0eb991705\",\"sort\":[\"nginx.access.body_sent.bytes\",\"desc\"],\"type\":\"search\",\"version\":\"6.2.4\"},{\"panelIndex\":\"13\",\"gridData\":{\"x\":0,\"y\":26,\"w\":12,\"h\":3,\"i\":\"13\"},\"id\":\"b23c8a00-6f32-11e8-a0fb-51f0eb991705\",\"type\":\"visualization\",\"version\":\"6.2.4\"}]", "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" } } } ] ================================================ FILE: Week4_Elasticsearch/object/dashboard/shopping-dashboard.json ================================================ [ { "_id": "71dedc90-82c1-11e8-8161-3b4280559eb3", "_type": "dashboard", "_source": { "title": "shopping", "hits": 0, "description": "", "panelsJSON": "[{\"panelIndex\":\"20\",\"gridData\":{\"x\":0,\"y\":14,\"w\":6,\"h\":4,\"i\":\"20\"},\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"id\":\"AWJdii5xzMQVnr-9MxxQ\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"21\",\"gridData\":{\"x\":6,\"y\":3,\"w\":6,\"h\":4,\"i\":\"21\"},\"embeddableConfig\":{\"mapCenter\":[36.54494944148322,128.199462890625],\"mapZoom\":6},\"id\":\"AWJgEGqCzMQVnr-9MxxW\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"22\",\"gridData\":{\"x\":0,\"y\":0,\"w\":9,\"h\":3,\"i\":\"22\"},\"id\":\"AWJglBU6zMQVnr-9Mxxa\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"24\",\"gridData\":{\"x\":0,\"y\":3,\"w\":6,\"h\":4,\"i\":\"24\"},\"id\":\"AWJgsNh9zMQVnr-9Mxxe\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"25\",\"gridData\":{\"x\":9,\"y\":0,\"w\":3,\"h\":3,\"i\":\"25\"},\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}},\"id\":\"AWJguWqpzMQVnr-9Mxxg\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"26\",\"gridData\":{\"x\":0,\"y\":7,\"w\":6,\"h\":4,\"i\":\"26\"},\"id\":\"AWJgycpEzMQVnr-9Mxxi\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"27\",\"gridData\":{\"x\":0,\"y\":11,\"w\":6,\"h\":3,\"i\":\"27\"},\"embeddableConfig\":{\"vis\":{\"legendOpen\":false}},\"id\":\"AWJg0q4CzMQVnr-9Mxxk\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"28\",\"gridData\":{\"x\":6,\"y\":11,\"w\":6,\"h\":3,\"i\":\"28\"},\"id\":\"AWJg1XpWzMQVnr-9Mxxl\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"29\",\"gridData\":{\"x\":0,\"y\":18,\"w\":12,\"h\":4,\"i\":\"29\"},\"embeddableConfig\":{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}},\"id\":\"AWJg1wbTzMQVnr-9Mxxm\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"30\",\"gridData\":{\"x\":6,\"y\":14,\"w\":6,\"h\":4,\"i\":\"30\"},\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(165,0,38)\",\"1 - 2\":\"rgb(249,142,82)\",\"2 - 3\":\"rgb(255,255,190)\",\"3 - 4\":\"rgb(135,203,103)\",\"4 - 5\":\"rgb(0,104,55)\"}}},\"id\":\"AWJg3QUCzMQVnr-9Mxxo\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"31\",\"gridData\":{\"x\":0,\"y\":22,\"w\":12,\"h\":3,\"i\":\"31\"},\"id\":\"AWGI8fjSPloSIAlpOE6c\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"panelIndex\":\"32\",\"gridData\":{\"x\":6,\"y\":7,\"w\":6,\"h\":4,\"i\":\"32\"},\"version\":\"6.2.4\",\"type\":\"visualization\",\"id\":\"147d34a0-82c8-11e8-8161-3b4280559eb3\",\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 55\":\"rgb(255,255,204)\",\"55 - 110\":\"rgb(254,217,118)\",\"110 - 165\":\"rgb(253,141,60)\",\"165 - 220\":\"rgb(227,27,28)\"},\"legendOpen\":false}}}]", "optionsJSON": "{\"darkTheme\":false,\"useMargins\":false}", "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"filter\":[],\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":{\"match_all\":{}}}}" } } } ] ================================================ FILE: Week4_Elasticsearch/object/search/nginx-search.json ================================================ [ { "_id": "de77bd70-6f31-11e8-a0fb-51f0eb991705", "_type": "search", "_source": { "title": "[nginx] search", "description": "", "hits": 0, "columns": [ "nginx.access.url", "nginx.access.response_code", "nginx.access.body_sent.bytes" ], "sort": [ "@timestamp", "desc" ], "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[]}" } } } ] ================================================ FILE: Week4_Elasticsearch/object/visualization/nginx-visualization.json ================================================ [ { "_id": "57d11570-6f2a-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] markdown", "visState": "{\"title\":\"[nginx] markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":10,\"markdown\":\"### Nginx Access.Log Dashboard\\n---\\n```\\n66.249.82.131 - - [13/Jun/2018:17:01:02 +0000] \\\"GET /ui/favicons/favicon-16x16.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n118.221.38.242 - - [13/Jun/2018:17:01:14 +0000] \\\"POST /api/console/proxy?path=_aliases&method=GET HTTP/1.1\\\" 200 107 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"-\\\"\\n118.221.38.242 - - [13/Jun/2018:17:01:14 +0000] \\\"POST /api/console/proxy?path=_mapping&method=GET HTTP/1.1\\\" 200 974 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"-\\\"\\n66.249.82.131 - - [13/Jun/2018:17:01:16 +0000] \\\"GET /ui/favicons/favicon-32x32.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n66.249.82.129 - - [13/Jun/2018:17:01:17 +0000] \\\"GET /ui/favicons/favicon-16x16.png HTTP/1.1\\\" 304 0 \\\"http://kibana.higee.co/app/kibana\\\" \\\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36\\\" \\\"118.221.38.242\\\"\\n```\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } }, { "_id": "7a9123a0-6f27-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] coordinate maps", "visState": "{\"title\":\"[nginx] coordinate maps\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.geoip.location\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":2}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "7b3cdde0-6f30-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Timelion", "visState": "{\"title\":\"[nginx] Timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=nginx*, timefield=@timestamp, metric=count).label(전체).lines(), .es(index=nginx*, timefield=@timestamp, q= -nginx.access.response_code:200, metric=count).divide(.es(index=nginx*, timefield=@timestamp, metric=count)).if(gte, 0.5, .es(index=nginx*, timefield=@timestamp, metric=count, q=-nginx.access.response_code:200), null).points().color(#fd8282).label('에러 50% 이상').legend(position=ne)\",\"interval\":\"auto\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } }, { "_id": "08e28cc0-6f28-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] region maps", "visState": "{\"title\":\"[nginx] region maps\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"attribution\":\"Made with NaturalEarth | Elastic Maps Service
\",\"name\":\"World Countries\",\"weight\":1,\"format\":{\"type\":\"geojson\"},\"url\":\"https://vector.maps.elastic.co/blob/5659313586569216?elastic_tile_service_tos=agree&my_app_version=6.2.4\",\"fields\":[{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},{\"name\":\"name\",\"description\":\"Country name\"},{\"name\":\"iso3\",\"description\":\"Three letter abbreviation\"}],\"created_at\":\"2017-04-26T17:12:15.978370\",\"tags\":[],\"id\":5659313586569216,\"layerId\":\"elastic_maps_service.World Countries\"},\"selectedJoinField\":{\"name\":\"iso2\",\"description\":\"Two letter abbreviation\"},\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":2,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.geoip.country_code2\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{\"mapZoom\":2,\"mapCenter\":[11.695272733029402,24.433593750000004]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "cfbbc570-6f26-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] metric", "visState": "{\"title\":\"[nginx] metric\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":31}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"req\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "25a7f140-6f20-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] tag-cloud", "visState": "{\"title\":\"[nginx] tag-cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.user_agent.os_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "c1d84360-6f2c-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] area chart", "visState": "{\"title\":\"[nginx] area chart\",\"type\":\"line\",\"params\":{\"type\":\"line\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"req 개수\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"req 개수\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"req 개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"h\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"filters\",\"schema\":\"group\",\"params\":{\"filters\":[{\"input\":{\"query\":\"nginx.access.response_code:200\"},\"label\":\"200\"},{\"input\":{\"query\":\"NOT nginx.access.response_code:200\"},\"label\":\"NOT 200\"}]}}]}", "uiStateJSON": "{\"vis\":{\"colors\":{\"200\":\"#6ED0E0\",\"nginx.access.response_code:200\":\"#F29191\"},\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "1fe62120-6f37-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Goal", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"customBucket\":{\"enabled\":true,\"id\":\"1-bucket\",\"params\":{\"customInterval\":\"2h\",\"extended_bounds\":{},\"field\":\"@timestamp\",\"interval\":\"d\",\"min_doc_count\":1},\"schema\":{\"aggFilter\":[],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"max\":null,\"min\":0,\"name\":\"bucketAgg\",\"params\":[],\"title\":\"Bucket Agg\"},\"type\":\"date_histogram\"},\"customMetric\":{\"enabled\":true,\"id\":\"1-metric\",\"params\":{},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!percentile_ranks\",\"!median\",\"!std_dev\",\"!sum_bucket\",\"!avg_bucket\",\"!min_bucket\",\"!max_bucket\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"max\":null,\"min\":0,\"name\":\"metricAgg\",\"params\":[],\"title\":\"Metric Agg\"},\"type\":\"count\"}},\"schema\":\"metric\",\"type\":\"max_bucket\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"filters\":[{\"input\":{\"query\":\"nginx.access.geoip.country_name: \\\"United States\\\"\"},\"label\":\"\"}]},\"schema\":\"group\",\"type\":\"filters\"}],\"params\":{\"addLegend\":false,\"addTooltip\":true,\"gauge\":{\"autoExtend\":false,\"backStyle\":\"Full\",\"colorSchema\":\"Green to Red\",\"colorsRange\":[{\"from\":0,\"to\":200}],\"extendRange\":true,\"gaugeColorMode\":\"None\",\"gaugeStyle\":\"Full\",\"gaugeType\":\"Arc\",\"invertColors\":false,\"labels\":{\"color\":\"black\",\"show\":true},\"orientation\":\"vertical\",\"percentageMode\":true,\"scale\":{\"color\":\"#333\",\"labels\":false,\"show\":false,\"width\":2},\"style\":{\"bgColor\":false,\"bgFill\":\"#000\",\"fontSize\":60,\"labelColor\":false,\"subText\":\"\"},\"type\":\"meter\",\"useRanges\":false,\"verticalSplit\":false},\"isDisplayWarning\":false,\"type\":\"gauge\"},\"title\":\"[nginx] Goal\",\"type\":\"goal\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "98a8d0b0-6f2a-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] pie chart", "visState": "{\"title\":\"[nginx] pie chart\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":true,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.method\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":100,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "fe7b9a30-6f20-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] heat map", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"요일\",\"field\":\"요일_한글\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"asc\",\"orderAgg\":{\"enabled\":true,\"id\":\"2-orderAgg\",\"params\":{\"field\":\"요일_숫자\"},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!median\",\"!std_dev\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\",\"!avg_bucket\",\"!max_bucket\",\"!min_bucket\",\"!sum_bucket\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"hideCustomLabel\":true,\"max\":null,\"min\":0,\"name\":\"orderAgg\",\"params\":[],\"title\":\"Order Agg\"},\"type\":\"avg\"},\"orderBy\":\"custom\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":7},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"customLabel\":\"시간대\",\"field\":\"시간대\",\"ranges\":[{\"from\":18,\"to\":23},{\"from\":14,\"to\":18},{\"from\":10,\"to\":14},{\"from\":5,\"to\":10},{\"from\":0,\"to\":5}]},\"schema\":\"group\",\"type\":\"range\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":6,\"colorsRange\":[],\"enableHover\":false,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"title\":\"[nginx] heat map\",\"type\":\"heatmap\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 584\":\"rgb(255,255,204)\",\"584 - 1,167\":\"rgb(255,230,146)\",\"1,167 - 1,750\":\"rgb(254,191,90)\",\"1,750 - 2,334\":\"rgb(253,141,60)\",\"2,334 - 2,917\":\"rgb(244,61,37)\",\"2,917 - 3,500\":\"rgb(202,8,35)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "4b2430e0-6f2b-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] horizontal bar", "visState": "{\"title\":\"[nginx] horizontal bar\",\"type\":\"horizontal_bar\",\"params\":{\"type\":\"histogram\",\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"평균 전송량 (byte)\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"평균 전송량 (byte)\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"customLabel\":\"평균 전송량 (byte)\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"nginx.access.user_agent.name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"agent\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } }, { "_id": "b23c8a00-6f32-11e8-a0fb-51f0eb991705", "_type": "visualization", "_source": { "title": "[nginx] Data Table", "visState": "{\"title\":\"[nginx] Data Table\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showMeticsAtAllLevels\":false,\"showPartialRows\":false,\"showTotal\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"req 개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"@timestamp\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"nginx.access.geoip.city_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"도시\"}},{\"id\":\"5\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"nginx.access.body_sent.bytes\",\"customLabel\":\"평균 body_sent (bytes)\"}}]}", "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"eb4d54b0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" } } } ] ================================================ FILE: Week4_Elasticsearch/object/visualization/shopping-visualization.json ================================================ [ { "_id": "AWJgoeObzMQVnr-9Mxxc", "_type": "visualization", "_source": { "title": "shopping_coordinates", "visState": "{\"title\":\"shopping_coordinates\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatMaxZoom\":0,\"heatMinOpacity\":0.1,\"heatRadius\":25,\"heatBlur\":15,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"url\":\"https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer\",\"options\":{\"version\":\"1.3.0\",\"layers\":\"0\",\"format\":\"image/png\",\"transparent\":true,\"attribution\":\"Maps provided by USGS\",\"styles\":\"\"}},\"type\":\"tile_map\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"물건좌표\",\"autoPrecision\":true,\"useGeocentroid\":true,\"precision\":2}}],\"listeners\":{}}", "uiStateJSON": "{\"mapZoom\":9,\"mapCenter\":[36.52619126653696,127.91244506835936]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJguWqpzMQVnr-9Mxxg", "_type": "visualization", "_source": { "title": "[shopping] metrics", "visState": "{\"title\":\"[shopping] metrics\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"colorSchema\":\"Green to Red\",\"useRange\":false,\"colorsRange\":[{\"from\":0,\"to\":100}],\"invertColors\":false,\"labels\":{\"show\":true,\"color\":\"black\"},\"style\":{\"fontSize\":60,\"bgColor\":false,\"labelColor\":false,\"subText\":\"\"},\"metricColorMode\":\"None\"}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"전체 데이터\"}}]}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 100\":\"rgb(0,104,55)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJdii5xzMQVnr-9MxxQ", "_type": "visualization", "_source": { "title": "[shopping] Area Chart", "visState": "{\"title\":\"[shopping] Area Chart\",\"type\":\"area\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"주문시간\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"주문개수\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"주문개수\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"area\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품개수\",\"customLabel\":\"주문개수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"주문시간\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"주문시간\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"고객성별\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg0q4CzMQVnr-9Mxxk", "_type": "visualization", "_source": { "title": "[shopping] Line Chart", "visState": "{\"title\":\"[shopping] Line Chart\",\"type\":\"line\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"주문시간\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"배송소요시간\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"line\",\"mode\":\"normal\",\"data\":{\"label\":\"배송소요시간\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"line\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"percentiles\",\"schema\":\"metric\",\"params\":{\"field\":\"배송소요시간\",\"percents\":[1,50,99],\"customLabel\":\"배송소요시간\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"주문시간\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"주문시간\"}}]}", "uiStateJSON": "{\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg1XpWzMQVnr-9Mxxl", "_type": "visualization", "_source": { "title": "[shopping] Horizontal Bar", "visState": "{\"title\":\"[shopping] Horizontal Bar\",\"type\":\"histogram\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":200},\"title\":{\"text\":\"판매자평점\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":75,\"filter\":true,\"truncate\":100},\"title\":{\"text\":\"매출\"}}],\"seriesParams\":[{\"show\":true,\"type\":\"histogram\",\"mode\":\"normal\",\"data\":{\"label\":\"매출\",\"id\":\"1\"},\"valueAxis\":\"ValueAxis-1\",\"drawLinesBetweenPoints\":true,\"showCircles\":true}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false,\"type\":\"horizontal_bar\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품가격\",\"customLabel\":\"매출\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"판매자평점\",\"interval\":1,\"extended_bounds\":{}}}]}", "uiStateJSON": "{\"vis\":{\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg1wbTzMQVnr-9Mxxm", "_type": "visualization", "_source": { "title": "[shopping] Data Table", "visState": "{\"title\":\"[shopping] Data Table\",\"type\":\"table\",\"params\":{\"perPage\":30,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\",\"type\":\"table\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"sum\",\"schema\":\"metric\",\"params\":{\"field\":\"상품가격\",\"customLabel\":\"매출\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_histogram\",\"schema\":\"bucket\",\"params\":{\"field\":\"주문시간\",\"interval\":\"d\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{},\"customLabel\":\"날짜\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"구매사이트\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"사이트\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"결제카드\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"카드\"}}]}", "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgycpEzMQVnr-9Mxxi", "_type": "visualization", "_source": { "title": "[shopping] Pie Chart", "visState": "{\"title\":\"[shopping] Pie Chart\",\"type\":\"pie\",\"params\":{\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"type\":\"pie\",\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"판매자평점\",\"aggregate\":\"average\",\"size\":5,\"sortField\":\"판매자평점\",\"sortOrder\":\"desc\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"split\",\"params\":{\"field\":\"배송소요시간\",\"interval\":24,\"extended_bounds\":{},\"row\":false}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"고객주소_시도\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"orderAgg\":{\"id\":\"2-orderAgg\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"orderAgg\",\"params\":{\"field\":\"배송소요시간\"}},\"order\":\"desc\",\"orderBy\":\"custom\"}}]}", "uiStateJSON": "{\"vis\":{\"colors\":{\"인천광역시\":\"#962D82\"},\"legendOpen\":false}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AV_Fp61Dju5h0m3erKmP", "_type": "visualization", "_source": { "title": "shopping_timelion_2", "visState": "{\"title\":\"shopping_timelion_2\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=shopping, timefield=주문시간, metric=sum:상품가격).label('올해 매출').range(0, 1), .es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y).label('작년 매출').color(#00b8ff).range(0, 1), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).subtract(.es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y)).if(gte, 50000, .es(index=shopping, timefield=주문시간, metric=sum:상품가격), null).lines(fill=5, width=2).color(#fd8282).label('전년 대비 50,000 이상 상승 구간').yaxis(label=매출).range(0, 1)\",\"interval\":\"1d\",\"type\":\"timelion\"},\"aggs\":[],\"listeners\":{}}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgEGqCzMQVnr-9MxxW", "_type": "visualization", "_source": { "title": "[shopping] Region Map", "visState": "{\"title\":\"[shopping] Region Map\",\"type\":\"region_map\",\"params\":{\"legendPosition\":\"bottomright\",\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"selectedLayer\":{\"name\":\"Korea City\",\"url\":\"https://s3.ap-northeast-2.amazonaws.com/higee-map/korea.geojson\",\"fields\":[{\"name\":\"name\",\"description\":\"City name\"}],\"format\":{\"type\":\"geojson\"},\"meta\":{\"feature_collection_path\":\"data\"},\"layerId\":\"self_hosted.Korea City\"},\"selectedJoinField\":{\"name\":\"name\",\"description\":\"City name\"},\"type\":\"region_map\",\"isDisplayWarning\":true,\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}},\"mapZoom\":2,\"mapCenter\":[0,0],\"outlineWeight\":1,\"showAllShapes\":true},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"고객주소_시도\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":20,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{\"mapZoom\":7,\"mapCenter\":[36.071302299422406,128.21594238281253],\"spy\":null}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJg3QUCzMQVnr-9Mxxo", "_type": "visualization", "_source": { "title": "[shopping] Goal", "visState": "{\"title\":\"[shopping] Goal\",\"type\":\"goal\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"gauge\",\"gauge\":{\"verticalSplit\":false,\"autoExtend\":false,\"percentageMode\":false,\"gaugeType\":\"Arc\",\"gaugeStyle\":\"Full\",\"backStyle\":\"Full\",\"orientation\":\"vertical\",\"useRanges\":false,\"colorSchema\":\"Yellow to Red\",\"gaugeColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":1},{\"from\":1,\"to\":2},{\"from\":2,\"to\":3},{\"from\":3,\"to\":4},{\"from\":4,\"to\":5}],\"invertColors\":true,\"labels\":{\"show\":true,\"color\":\"black\"},\"scale\":{\"show\":false,\"labels\":false,\"color\":\"#333\",\"width\":2},\"type\":\"meter\",\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}},\"isDisplayWarning\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"top_hits\",\"schema\":\"metric\",\"params\":{\"field\":\"판매자평점\",\"aggregate\":\"average\",\"size\":10,\"sortField\":\"상품가격\",\"sortOrder\":\"desc\",\"customLabel\":\"연령별 VIP 평점\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"연령대\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":3,\"order\":\"asc\",\"orderBy\":\"_term\"}}]}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 1\":\"rgb(128,0,38)\",\"1 - 2\":\"rgb(227,27,28)\",\"2 - 3\":\"rgb(253,141,60)\",\"3 - 4\":\"rgb(254,217,118)\",\"4 - 5\":\"rgb(255,255,204)\"}},\"spy\":{\"mode\":{\"name\":null,\"fill\":false}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJgsNh9zMQVnr-9Mxxe", "_type": "visualization", "_source": { "title": "[shopping] Tag Cloud", "visState": "{\"title\":\"[shopping] Tag Cloud\",\"type\":\"tagcloud\",\"params\":{\"scale\":\"linear\",\"orientation\":\"single\",\"minFontSize\":18,\"maxFontSize\":72,\"type\":\"tagcloud\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"구매사이트\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWGI8fjSPloSIAlpOE6c", "_type": "visualization", "_source": { "title": "[shopping] Timelion", "visState": "{\"title\":\"[shopping] Timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=shopping, timefield=주문시간, metric=sum:상품가격).label('올해 매출'), .es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y).label('작년 매출').color(#00b8ff), .es(index=shopping, timefield=주문시간, metric=sum:상품가격).subtract(.es(index=shopping, timefield=주문시간, metric=sum:상품가격, offset=-1y)).if(gte, 50000, .es(index=shopping, timefield=주문시간, metric=sum:상품가격), null).lines(fill=5, width=2).color(#fd8282).label('전년 대비 50,000 이상 상승 구간').yaxis(label=매출).legend(position=ne)\",\"interval\":\"1d\",\"type\":\"timelion\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "AWJglBU6zMQVnr-9Mxxa", "_type": "visualization", "_source": { "title": "[shopping] markdown", "visState": "{\"title\":\"[shopping] markdown\",\"type\":\"markdown\",\"params\":{\"type\":\"markdown\",\"markdown\":\"### Elastic Stack을 활용한 Data Dashboard 만들기 CAMP\\n---\\n* [강의자료](https://github.com/higee/elastic)\\n* [강의질문](https://www.facebook.com/groups/FCElasticStack/)\\n* [Markdown문법](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)\",\"fontSize\":12},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"query\":{\"match_all\":{}},\"language\":\"lucene\"},\"filter\":[]}" } } }, { "_id": "147d34a0-82c8-11e8-8161-3b4280559eb3", "_type": "visualization", "_source": { "title": "[shopping] Heat Map", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{},\"schema\":\"metric\",\"type\":\"count\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"요일\",\"field\":\"주문시간_요일\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderBy\":\"1\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":7},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"customLabel\":\"시간\",\"field\":\"주문시간_시간대\",\"ranges\":[{\"from\":0,\"to\":7},{\"from\":7,\"to\":11},{\"from\":11,\"to\":15},{\"from\":15,\"to\":19},{\"from\":19,\"to\":23}]},\"schema\":\"group\",\"type\":\"range\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":4,\"colorsRange\":[],\"enableHover\":false,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"title\":\"[shopping] Heat Map\",\"type\":\"heatmap\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 55\":\"rgb(255,255,204)\",\"55 - 110\":\"rgb(254,217,118)\",\"110 - 165\":\"rgb(253,141,60)\",\"165 - 220\":\"rgb(227,27,28)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"f3ef69f0-6fa9-11e8-8161-3b4280559eb3\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" } } } ] ================================================ FILE: Week5_Logstash/code/filter/csv/autodetect-column-names.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic-header.csv" start_position => "beginning" sincedb_path => "/dev/null" } } filter { csv { separator => "," autodetect_column_names => true } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/csv/convert.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic-header.csv" start_position => "beginning" sincedb_path => "/dev/null" } } filter { csv { separator => "," autodetect_column_names => true convert => { "Pclass" => "integer" "Index" => "integer" "Survival" => "integer" "Fare" => "float" "@timestamp" => "date" } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/csv/separator.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic-header.csv" start_position => "beginning" sincedb_path => "/dev/null" } } filter { csv { separator => "," } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/date/date.conf ================================================ input { file { path => "/usr/share/logstash/data/date.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => {"message" => '%{TIMESTAMP_ISO8601:time} %{WORD:name}'} remove_field => ["path", "@timestamp", "@version", "host", "message"] } date { match => ["time", "YYYY-MM-dd'T'HH:mm:ss"] timezone => "Asia/Seoul" target => "time" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise5" document_type => "exercise5" } } ================================================ FILE: Week5_Logstash/code/filter/date/default.conf ================================================ input { file { path => "/usr/share/logstash/data/date.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:time} %{WORD:name}'} remove_field => ["path", "@timestamp", "@version", "host", "message"] } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise4" document_type => "exercise4" } } ================================================ FILE: Week5_Logstash/code/filter/drop/drop1.conf ================================================ input { stdin {} } filter { if [message] == "hello" { drop {} } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/drop/drop2.conf ================================================ input { file { path => "/usr/share/logstash/data/access.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } if [status_code] == "200" { drop {} } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example1.conf ================================================ input { file { path => "/usr/share/logstash/data/access2.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:current_time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } elasticsearch { hosts => ["elasticsearch.higee.co"] index => "nginx-*" query => "nginx.access.geoip.ip:%{[clientip]}" sort => "@timestamp:desc" fields => {"@timestamp" => "previous_time"} remove_field => ["status_code", "path", "@timestamp", "req", "res_time", "@version", "host"] } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example1_.conf ================================================ input { file { path => "/usr/share/logstash/data/access2.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } elasticsearch { hosts => ["elasticsearch.higee.co"] index => "nginx-*" query => "nginx.access.geoip.ip:%{[clientip]}" sort => "@timestamp:desc" fields => {"nginx" => "nginx_"} } mutate { add_field => { "byte" => "%{[nginx_][access][body_sent][bytes]}"} remove_field => ["[nginx_]"] } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example2.conf ================================================ input { file { path => "/usr/share/logstash/data/access2.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:current_time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } elasticsearch { hosts => ["elasticsearch.higee.co"] index => "nginx-*" query => "nginx.access.geoip.ip:%{[clientip]}" sort => "@timestamp:desc" fields => {"@timestamp" => "previous_time"} } if [previous_time] { date { match => ["current_time", "YYYY-MM-dd'T'HH:mm:ss.SSSZ"] target => "current_time" } date { match => ["previous_time", "YYYY-MM-dd'T'HH:mm:ss.SSSZ"] target => "previous_time" } ruby { code => "event.set('access_interval', ((event.get('current_time') - event.get('previous_time'))/3600).round(2))" } } mutate { remove_field => ["status_code", "path", "@timestamp", "req", "res_time", "@version", "host"] } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example3.conf ================================================ input { file { path => "/usr/share/logstash/data/access2.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:current_time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } elasticsearch { hosts => ["elasticsearch.higee.co"] index => "nginx-*" query_template => "/usr/share/logstash/code/filter/elasticsearch/example3.json" fields => {"@timestamp" => "previous_time"} remove_field => ["status_code", "path", "@timestamp", "req", "res_time", "@version", "host"] } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example3.json ================================================ { "size": 1, "sort" : [ { "@timestamp" : "desc" } ], "_source" : ["@timestamp"], "query": { "term": { "nginx.access.geoip.ip" : "%{[clientip]}" } } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example4.conf ================================================ input { file { path => "/usr/share/logstash/data/access2.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:current_time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } elasticsearch { hosts => ["elasticsearch.higee.co"] index => "nginx-*" query_template => "/usr/share/logstash/code/filter/elasticsearch/example4.json" fields => {"@timestamp" => "previous_time"} remove_field => ["status_code", "path", "@timestamp", "req", "res_time", "@version", "host", "current_time"] aggregation_fields => { "this_is_avg" => "elasticsearch_aggregation" } } if ![elasticsearch_aggregation][value] { mutate { remove_field => ["elasticsearch_aggregation"] } } else { ruby { code => "event.set('average_byte', event.get('[elasticsearch_aggregation][value]').round(0))" remove_field => ["elasticsearch_aggregation"] } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/elasticsearch/example4.json ================================================ { "size": 0, "sort" : [ { "@timestamp" : "desc" } ], "query": { "term": { "nginx.access.geoip.ip" : "%{[clientip]}" } }, "aggs": { "this_is_avg": { "avg": { "field": "nginx.access.body_sent.bytes" } } } } ================================================ FILE: Week5_Logstash/code/filter/grok/access.conf ================================================ input { file { path => "/usr/share/logstash/data/access.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => '%{TIMESTAMP_ISO8601:time} %{IPORHOST:clientip} %{NUMBER:res_time} %{NUMBER:status_code} %{QS:req}' } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/grok/apache.conf ================================================ input { file { path => "/usr/share/logstash/data/apache.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/mutate/add_field.conf ================================================ input { file { path => "/usr/share/logstash/data/ip-address.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { mutate { split => { "message" => ":" } add_field => { "ip" => "%{message[0]}" "port" => "%{message[1]}" } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/mutate/remove_field.conf ================================================ input { file { path => "/usr/share/logstash/data/ip-address.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { mutate { split => { "message" => ":" } add_field => { "ip" => "%{message[0]}" "port" => "%{message[1]}" } remove_field => ["path", "@timestamp", "@version", "host", "message"] } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/mutate/split.conf ================================================ input { file { path => "/usr/share/logstash/data/ip-address.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { mutate { split => { "message" => ":" } } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/filter/ruby/example1.conf ================================================ input { file { path => "/usr/share/logstash/data/date.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { grok { match => {"message" => '%{TIMESTAMP_ISO8601:time} %{WORD:name}'} remove_field => ["path", "@timestamp", "@version", "host", "message"] } date { match => ["time", "YYYY-MM-dd'T'HH:mm:ss"] timezone => "Asia/Seoul" target => "time2" remove_field => ["time"] } ruby { code => "event.set('_time2', event.get('time2').time.localtime('+09:00').strftime('%Y-%m-%dT%H:%M:%S'))" } } output { stdout {} } ================================================ FILE: Week5_Logstash/code/filter/ruby/example2.conf ================================================ input { file { path => "/usr/share/logstash/data/access.log" start_position => "beginning" sincedb_path => "/dev/null" } } filter { ruby { code => "event.set('status code', (event.get('message').split(' ')[3]).to_i)" remove_field => ["path", "@version", "host", "@timestamp"] } } output { stdout {} } ================================================ FILE: Week5_Logstash/code/input/elasticsearch/elasticsearch.conf ================================================ input { elasticsearch { hosts => ["52.78.134.20:9200"] index => "exercise1" query => '{ "query" : { "match_all" : {} } }' } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/file/file-sincedb-path.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic.csv" start_position => "beginning" sincedb_path => "/dev/null" } } output { stdout { codec => rubydebug } } ================================================ FILE: Week5_Logstash/code/input/file/file-start-position.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic2.csv" start_position => "beginning" } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/file/file.conf ================================================ input { file { path => "/usr/share/logstash/data/titanic.csv" } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/file/nginx.conf ================================================ input { file { path => "/usr/share/logstash/data2/access.log" start_position => "beginning" sincedb_path => "/dev/null" type => "access" } } filter { if [type] == "access" { grok { match => { "message" => ["%{IPORHOST:[nginx][access][remote_ip]} - %{DATA:[nginx][access][user_name]} \[%{HTTPDATE:[nginx][access][time]}\] \"%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}\" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][body_sent][bytes]} \"%{DATA:[nginx][access][referrer]}\" \"%{DATA:[nginx][access][agent]}\""] } remove_field => "message" } date { match => [ "[nginx][access][time]", "dd/MMM/YYYY:H:m:s Z" ] remove_field => "[nginx][access][time]" } useragent { source => "[nginx][access][agent]" target => "[nginx][access][user_agent]" remove_field => "[nginx][access][agent]" } geoip { source => "[nginx][access][remote_ip]" target => "[nginx][access][geoip]" } mutate { remove_field => ["@version", "path", "host", "[nginx][access][geoip][latitude]", "[nginx][access][geoip][longitude]"] convert => {"[nginx][access][body_sent][bytes]" => "integer" } } } } output { elasticsearch { hosts => "elasticsearch:9200" index => "nginx-%{+YYYY.MM.dd}" } } ================================================ FILE: Week5_Logstash/code/input/jdbc/jdbc-schedule.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" schedule => "0 6 * * *" } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/jdbc/jdbc-sql-last-value-1.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" use_column_value => true tracking_column => id last_run_metadata_path => "/usr/share/logstash/id-under-5.db" statement => " SELECT * FROM fc WHERE id < 5 " } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/jdbc/jdbc-sql-last-value-2.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" use_column_value => true tracking_column => id last_run_metadata_path => "/usr/share/logstash/id-under-5.db" statement => " SELECT * FROM fc WHERE id > :sql_last_value " } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/jdbc/jdbc.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" } } output { stdout { } } ================================================ FILE: Week5_Logstash/code/input/stdin/stdin.conf ================================================ input { stdin {} } output { stdout {} } ================================================ FILE: Week5_Logstash/code/logstash.md ================================================ ### week5.pdf 실행 스크립트 --- #### input * stdin * p 17 : `$ bin/logstash -f code/input/stdin/stdin.conf` * file * p 22 : `$ bin/logstash -f code/input/file/file.conf` * p 26 : `$ bin/logstash -f code/input/file/file-start-position.conf` * p 37 : `$ bin/logstash -f code/input/file/file-sincedb-path.conf` * jdbc * p 42 : `$ bin/logstash -f code/input/jdbc/jdbc.conf` * p 48 : `$ bin/logstash -f code/input/jdbc/jdbc-sql-last-value-1.conf` * p 51 : `$ bin/logstash -f code/input/jdbc/jdbc-sql-last-value-2.conf` * elasticsearch * p 59 : `$ bin/logstash -f code/input/elasticsearch/elasticsearch.conf` --- #### output * csv * p 63 : `$ bin/logstash -f code/output/csv/csv.conf` * elasticsearch * p 67 : `$ bin/logstash -f code/output/elasticsearch/elasticsearch.conf` * p 71 : `$ bin/logstash -f code/output/elasticsearch/elasticsearch-dynamic-field-name-1.conf` * p 75 : `$ bin/logstash -f code/output/elasticsearch/elasticsearch-dynamic-field-name-2.conf` * p 79 : `$ bin/logstash -f code/output/elasticsearch/elasticsearch-stdout.conf` #### conditional * if/else if/else * p 83 : `$ bin/logstash -f code/output/conditional.conf` --- #### filter * csv * p 89 : `$ bin/logstash -f code/filter/csv/separator.conf` * p 94 : `$ bin/logstash -f code/filter/csv/autodetect-column-names.conf` * p 98 : `$ bin/logstash -f code/filter/csv/convert.conf` * mutate * p 106 : `$ bin/logstash -f code/filter/mutate/split.conf` * p 110 : `$ bin/logstash -f code/filter/mutate/add_field.conf` * p 114 : `$ bin/logstash -f code/filter/mutate/remove_field.conf` * grok * p 123 : `$ bin/logstash -f code/filter/grok/access.conf` * p 129 : `$ bin/logstash -f code/filter/grok/apache.conf` * date * p 135 : `$ bin/logstash -f code/filter/date/default.conf` * p 135 : `$ bin/logstash -f code/filter/date/date.conf` * drop * p 139 : `$ bin/logstash -f code/filter/drop/drop1.conf` * p 143 : `$ bin/logstash -f code/filter/drop/drop2.conf` * ruby * p 151 : `$ bin/logstash -f code/filter/ruby/example1.conf` * p 155 : `$ bin/logstash -f code/filter/ruby/example2.conf` * elasticsearch * p 160 : `$ bin/logstash -f code/filter/elasticsearch/example1.conf` * p 164 : `$ bin/logstash -f code/filter/elasticsearch/example2.conf` * p 169 : `$ bin/logstash -f code/filter/elasticsearch/example3.conf` * p 174 : `$ bin/logstash -f code/filter/elasticsearch/example4.conf` ================================================ FILE: Week5_Logstash/code/output/conditional.conf ================================================ input { stdin {} } output { if [message] in ["Seoul", "Busan"] { elasticsearch { hosts => ["elasticsearch:9200"] index => "korea" } } else if [message] == "Osaka" { elasticsearch { hosts => ["elasticsearch:9200"] index => "japan" } } else { elasticsearch { hosts => ["elasticsearch:9200"] index => "else" } } } ================================================ FILE: Week5_Logstash/code/output/csv/csv.conf ================================================ input { elasticsearch { hosts => ["52.78.134.20:9200"] index => "exercise1" query => '{ "query" : { "match_all" : {} } }' } } output { csv { fields => ["name", "location", "employment_status", "salary", "age"] path => "/usr/share/logstash/data/exercise1.csv" } } ================================================ FILE: Week5_Logstash/code/output/elasticsearch/elasticsearch-dynamic-field-name-1.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise1-%{+YYYY.MM.dd}" document_type => "exercise1" } } ================================================ FILE: Week5_Logstash/code/output/elasticsearch/elasticsearch-dynamic-field-name-2.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise2-%{+YYYY.MM.dd}" document_type => "exercise2" document_id => "%{@timestamp}-%{name}" } } ================================================ FILE: Week5_Logstash/code/output/elasticsearch/elasticsearch-stdout.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise3" document_type => "exercise3" } stdout { } } ================================================ FILE: Week5_Logstash/code/output/elasticsearch/elasticsearch.conf ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "fc" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM fc" } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "exercise1" document_type => "exercise1" } } ================================================ FILE: Week5_Logstash/code/output/stdout/stdout.conf ================================================ input { stdin {} } output { stdout { codec => rubydebug } } ================================================ FILE: Week6_Review/solution/p44_template ================================================ PUT _template/chicago-bike { "index_patterns": "chicago-bike*", "mappings": { "chicago-bike": { "properties": { "starttime": { "type": "date" }, "stoptime": { "type": "date" }, "idx" : { "type": "integer" }, "year": { "type": "integer" }, "month": { "type": "integer" }, "week": { "type": "integer" }, "day": { "type": "integer" }, "hour": { "type": "integer" }, "from_station_name": { "type": "keyword" }, "from_station_id": { "type": "keyword" }, "to_station_name": { "type": "keyword" }, "to_station_id": { "type": "keyword" }, "start_gps": { "type": "geo_point" }, "end_gps": { "type": "geo_point" }, "dpcapacity_start": { "type": "integer" }, "dpcapacity_end": { "type": "integer" }, "temperature": { "type": "float" }, "events": { "type": "keyword" }, "gender": { "type": "keyword" }, "trip_id": { "type": "keyword" }, "usertype": { "type": "keyword" }, "tags" : { "type": "keyword" }, "tripduration": { "type": "float" } } } } } ================================================ FILE: Week6_Review/solution/p46_logstash ================================================ input { jdbc { jdbc_validate_connection => true jdbc_connection_string => "jdbc:mysql://52.78.134.20:3306/fc" jdbc_user => "fc" jdbc_password => "week6" jdbc_driver_library => "/usr/share/logstash/driver/mysql-connector-java-5.1.36-bin.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM chicago_bike limit 3;" #use_column_value => true #tracking_column => idx } } filter { if [tripduration] <= 3 { drop {} } date { match => ["starttime", "YYYY-MM-dd HH:mm:ss"] target => "starttime" timezone => "America/Chicago" } date { match => ["stoptime", "YYYY-MM-dd HH:mm:ss"] target => "stoptime" timezone => "America/Chicago" } mutate { add_field => { "start_gps" => "%{latitude_start}, %{longitude_start}" "end_gps" => "%{latitude_end}, %{longitude_end}" "[@metadata][month_string]" => "%{month}" } convert => { "[@metadata][month_string]" => "string" } remove_field => ["@timestamp", "@version", "longitude_start", "latitude_start", "longitude_end", "latitude_end"] } if [tripduration] >= 24 { mutate { add_tag => ["VIP"] } } if [@metadata][month_string] =~ /^\d{1}$/ { mutate { replace => { "[@metadata][month_string]" => "0%{[@metadata][month_string]}" } } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "chicago-bike-%{year}.%{[@metadata][month_string]}" document_type => "chicago-bike" document_id => "%{trip_id}" } } ================================================ FILE: Week6_Review/solution/p53-heatmap.json ================================================ [ { "_id": "cd2bbaa0-8eb5-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise1 - heatmap", "visState": "{\"aggs\":[{\"enabled\":true,\"id\":\"1\",\"params\":{\"field\":\"tripduration\",\"percents\":[50]},\"schema\":\"metric\",\"type\":\"median\"},{\"enabled\":true,\"id\":\"2\",\"params\":{\"customLabel\":\"gender\",\"field\":\"events\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"order\":\"desc\",\"orderAgg\":{\"enabled\":true,\"id\":\"2-orderAgg\",\"params\":{},\"schema\":{\"aggFilter\":[\"!top_hits\",\"!percentiles\",\"!median\",\"!std_dev\",\"!derivative\",\"!moving_avg\",\"!serial_diff\",\"!cumulative_sum\",\"!avg_bucket\",\"!max_bucket\",\"!min_bucket\",\"!sum_bucket\"],\"deprecate\":false,\"editor\":false,\"group\":\"none\",\"hideCustomLabel\":true,\"max\":null,\"min\":0,\"name\":\"orderAgg\",\"params\":[],\"title\":\"Order Agg\"},\"type\":\"count\"},\"orderBy\":\"custom\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"size\":5},\"schema\":\"segment\",\"type\":\"terms\"},{\"enabled\":true,\"id\":\"3\",\"params\":{\"extended_bounds\":{},\"field\":\"temperature\",\"interval\":20},\"schema\":\"group\",\"type\":\"histogram\"}],\"params\":{\"addLegend\":true,\"addTooltip\":true,\"colorSchema\":\"Yellow to Red\",\"colorsNumber\":7,\"colorsRange\":[],\"enableHover\":true,\"invertColors\":false,\"legendPosition\":\"right\",\"percentageMode\":false,\"setColorRange\":false,\"times\":[],\"type\":\"heatmap\",\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"labels\":{\"color\":\"#555\",\"rotate\":0,\"show\":false},\"scale\":{\"defaultYExtents\":false,\"type\":\"linear\"},\"show\":false,\"type\":\"value\"}]},\"title\":\"exercise1 - heatmap\",\"type\":\"heatmap\"}", "uiStateJSON": "{\"vis\":{\"defaultColors\":{\"0 - 2\":\"rgb(255,255,204)\",\"2 - 4\":\"rgb(255,234,155)\",\"4 - 6\":\"rgb(254,206,106)\",\"6 - 7\":\"rgb(253,162,69)\",\"7 - 9\":\"rgb(252,105,49)\",\"9 - 11\":\"rgb(234,41,32)\",\"11 - 12\":\"rgb(194,3,37)\"}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b2cb05a0-8eb3-11e8-bf09-e9fa0893099a\",\"filter\":[],\"query\":{\"language\":\"lucene\",\"query\":\"\"}}" } } } ] ================================================ FILE: Week6_Review/solution/p54-coordinate-map.json ================================================ [ { "_id": "cdfa11b0-8eb6-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise2 - coordinate map1", "visState": "{\"title\":\"exercise2 - coordinate map1\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"start_gps\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":5}}]}", "uiStateJSON": "{\"mapZoom\":10,\"mapCenter\":[41.88285380945687,-87.67227172851564]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b2cb05a0-8eb3-11e8-bf09-e9fa0893099a\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } } ] ================================================ FILE: Week6_Review/solution/p55-coordinate-map.json ================================================ [ { "_id": "db4c4180-8eb6-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise2 - coordinate map2", "visState": "{\"title\":\"exercise2 - coordinate map2\",\"type\":\"tile_map\",\"params\":{\"mapType\":\"Scaled Circle Markers\",\"isDesaturated\":true,\"addTooltip\":true,\"heatClusterSize\":1.5,\"legendPosition\":\"bottomright\",\"mapZoom\":2,\"mapCenter\":[0,0],\"wms\":{\"enabled\":false,\"options\":{\"format\":\"image/png\",\"transparent\":true},\"baseLayersAreLoaded\":{},\"tmsLayers\":[{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}],\"selectedTmsLayer\":{\"id\":\"road_map\",\"url\":\"https://tiles.maps.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=6.2.4\",\"minZoom\":0,\"maxZoom\":10,\"attribution\":\"© OpenStreetMap contributors | Elastic Maps Service
\",\"subdomains\":[]}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"geohash_grid\",\"schema\":\"segment\",\"params\":{\"field\":\"end_gps\",\"autoPrecision\":true,\"isFilteredByCollar\":true,\"useGeocentroid\":true,\"precision\":5}}]}", "uiStateJSON": "{\"mapZoom\":10,\"mapCenter\":[41.88285380945687,-87.67227172851564]}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b2cb05a0-8eb3-11e8-bf09-e9fa0893099a\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } } ] ================================================ FILE: Week6_Review/solution/p58-timelion.json ================================================ [ { "_id": "741ee020-8eb7-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise3 - timelion", "visState": "{\"title\":\"exercise3 - timelion\",\"type\":\"timelion\",\"params\":{\"expression\":\".es(index=chicago-bike-*, timefield=starttime, metric=sum:tripduration).label(현재), .es(index=chicago-bike-*, timefield=starttime, metric=sum:tripduration, offset=-1M).label(전월)\",\"interval\":\"auto\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } } ] ================================================ FILE: Week6_Review/solution/p60-pie-chart.json ================================================ [ { "_id": "c5a13310-8eb9-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise4 - pie chart", "visState": "{\"title\":\"exercise4 - pie chart\",\"type\":\"pie\",\"params\":{\"type\":\"pie\",\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"isDonut\":false,\"labels\":{\"show\":false,\"values\":true,\"last_level\":true,\"truncate\":100}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"histogram\",\"schema\":\"split\",\"params\":{\"field\":\"hour\",\"interval\":6,\"extended_bounds\":{},\"row\":false}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"events\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}]}", "uiStateJSON": "{\"spy\":null}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b2cb05a0-8eb3-11e8-bf09-e9fa0893099a\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } } ] ================================================ FILE: Week6_Review/solution/p62-data-table.json ================================================ [ { "_id": "5943d8c0-8eba-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "exercise5 - data table", "visState": "{\"title\":\"exercise5 - data table\",\"type\":\"table\",\"params\":{\"perPage\":10,\"showPartialRows\":false,\"showMeticsAtAllLevels\":false,\"sort\":{\"columnIndex\":null,\"direction\":null},\"showTotal\":false,\"totalFunc\":\"sum\"},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{\"customLabel\":\"이용 건 수\"}},{\"id\":\"2\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"from_station_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"from_station\"}},{\"id\":\"3\",\"enabled\":true,\"type\":\"terms\",\"schema\":\"bucket\",\"params\":{\"field\":\"to_station_name\",\"otherBucket\":false,\"otherBucketLabel\":\"Other\",\"missingBucket\":false,\"missingBucketLabel\":\"Missing\",\"size\":10,\"order\":\"desc\",\"orderBy\":\"1\",\"customLabel\":\"to_station\"}},{\"id\":\"4\",\"enabled\":true,\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"tripduration\",\"customLabel\":\"평균 이용 시간\"}}]}", "uiStateJSON": "{\"vis\":{\"params\":{\"sort\":{\"columnIndex\":null,\"direction\":null}}}}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"b2cb05a0-8eb3-11e8-bf09-e9fa0893099a\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}" } } } ] ================================================ FILE: Week6_Review/solution/p64-markdown.json ================================================ [ { "_id": "ce7e6010-8eba-11e8-bf09-e9fa0893099a", "_type": "visualization", "_source": { "title": "markdown", "visState": "{\"title\":\"markdown\",\"type\":\"markdown\",\"params\":{\"fontSize\":12,\"markdown\":\"#### Elastic Stack으로 Data Dashboard 만들기 CAMP 5기 최종 Dashboard\\n---\"},\"aggs\":[]}", "uiStateJSON": "{}", "description": "", "version": 1, "kibanaSavedObjectMeta": { "searchSourceJSON": "{}" } } } ] ================================================ FILE: Week6_Review/solution/p65-dashboard.json ================================================ [ { "_id": "ed5fa2e0-8eb6-11e8-bf09-e9fa0893099a", "_type": "dashboard", "_source": { "title": "week6", "hits": 0, "description": "", "panelsJSON": "[{\"embeddableConfig\":{\"vis\":{\"defaultColors\":{\"0 - 3\":\"rgb(255,255,204)\",\"11 - 13\":\"rgb(252,105,49)\",\"13 - 16\":\"rgb(234,41,32)\",\"16 - 18\":\"rgb(194,3,37)\",\"3 - 6\":\"rgb(255,234,155)\",\"6 - 8\":\"rgb(254,206,106)\",\"8 - 11\":\"rgb(253,162,69)\"},\"legendOpen\":false}},\"gridData\":{\"h\":3,\"i\":\"1\",\"w\":6,\"x\":6,\"y\":10},\"id\":\"cd2bbaa0-8eb5-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"2\",\"w\":6,\"x\":0,\"y\":1},\"id\":\"cdfa11b0-8eb6-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"3\",\"w\":6,\"x\":6,\"y\":1},\"id\":\"db4c4180-8eb6-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"3\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"4\",\"w\":12,\"x\":0,\"y\":4},\"id\":\"741ee020-8eb7-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"4\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"5\",\"w\":12,\"x\":0,\"y\":7},\"id\":\"c5a13310-8eb9-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"5\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":3,\"i\":\"6\",\"w\":6,\"x\":0,\"y\":10},\"id\":\"5943d8c0-8eba-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"6\",\"type\":\"visualization\",\"version\":\"6.2.4\"},{\"gridData\":{\"h\":1,\"i\":\"7\",\"w\":12,\"x\":0,\"y\":0},\"id\":\"ce7e6010-8eba-11e8-bf09-e9fa0893099a\",\"panelIndex\":\"7\",\"type\":\"visualization\",\"version\":\"6.2.4\"}]", "optionsJSON": "{\"darkTheme\":false,\"hidePanelTitles\":false,\"useMargins\":true}", "version": 1, "timeRestore": false, "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[],\"highlightAll\":true,\"version\":true}" } } } ] ================================================ FILE: Week6_Review/solution/p66_query_dsl ================================================ GET chicago*/_search { "query": { "bool": { "must": [ { "prefix": { "to_station_name": { "value": "Cli" } } } ], "must_not": [ { "term": { "from_station_id": { "value": "313" } } } ], "should": [ { "term": { "events": { "value": "clear" } } }, { "range": { "dpcapacity_end": { "gte": 30, "lte": 40 } } } ], "minimum_should_match": 1 } } } ================================================ FILE: Week6_Review/solution/p67_logstash ================================================ input { elasticsearch { hosts => ["elasticsearch:9200"] index => "chicago-bike-*" query => '{ "query": { "bool": { "must": [ { "term": { "tags": { "value": "VIP" } } }, { "term": { "gender": { "value": "Female" } } }, { "range" : { "dpcapacity_end" : { "gte" : 10, "lt" : 12 } } } ], "must_not" : [ { "term" : { "events" : { "value" : "cloudy" } } } ] } }, "sort": [ { "tripduration": { "order": "desc" } } ] }' } } output { csv { fields => ["starttime", "stoptime", "tripduration"] path => "/usr/share/logstash/data/chicago.csv" } } ================================================ FILE: Week6_Review/solution/p71_backup_logstash ================================================ input { elasticsearch { hosts => ["elasticsearch.higee.co"] index => "shopping" } } output { elasticsearch { hosts => ["${host}"] index => "shopping-backup" } } ================================================ FILE: Week6_Review/solution/p73_backup_reindex ================================================ POST _reindex { "source": { "remote": { "host": "http://elasticsearch.higee.co:80" }, "index": "shopping", "query": { "match_all": {} } }, "dest": { "index": "shopping-backup" } }