Full Code of higee/elastic for AI

master 240ce84f6708 cached
179 files
204.4 KB
65.6k tokens
2 symbols
1 requests
Download .txt
Showing preview only (254K chars total). Download the full file or copy to clipboard to get everything.
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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p><a href=\\\"http://www.naturalearthdata.com/about/terms-of-use\\\">Made with NaturalEarth</a> | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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 공통
* 아래 내용의 동영상이며 영상 속 코드를 복사할 수도 있다. 

[![elastic stack install guide](https://asciinema.org/a/176392.png)](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

<a name='ec2'></a>
#### 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
```

<a name='git'></a>
#### 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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p><a href=\\\"http://www.naturalearthdata.com/about/terms-of-use\\\">Made with NaturalEarth</a> | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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\":\"<p>&#169; <a href=\\\"http://www.openstreetmap.org/copyright\\\">OpenStreetMap</a> contributors | <a href=\\\"https://www.elastic.co/elastic-maps-service\\\">Elastic Maps Service</a></p>&#10;\",\"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 => "
Download .txt
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
Download .txt
SYMBOL INDEX (2 symbols across 2 files)

FILE: Week1_Kibana/code/fake.py
  function fake_data (line 8) | def fake_data(es, name, n):

FILE: Week1_Kibana/code/insert.py
  function main (line 13) | def main():
Condensed preview — 179 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (264K chars).
[
  {
    "path": "Install/config/docker-compose-higee.yml",
    "chars": 1535,
    "preview": "version: '3'\n\nservices:\n\n  elasticsearch:\n    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4\n    contain"
  },
  {
    "path": "Install/config/docker-compose.yml",
    "chars": 1501,
    "preview": "version: '3'\n\nservices:\n\n  elasticsearch:\n    image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.4\n    contain"
  },
  {
    "path": "Install/config/kibana.yml",
    "chars": 4834,
    "preview": "#Kibana is served by a back end server. This setting specifies the port to use.\n#server.port: 5601\n\n# Specifies the addr"
  },
  {
    "path": "Install/data/access.log",
    "chars": 391,
    "preview": "2018-02-05T05:49:53.859060Z 172.30.39.133 0.079 200 \"GET https://helloworld.com/users/1 HTTP/1.1\"\n2018-02-05T06:49:53.85"
  },
  {
    "path": "Install/data/access2.log",
    "chars": 471,
    "preview": "2018-09-10T05:49:22.859Z 178.73.215.171 0.079 200 \"GET https://helloworld.com/users/1 HTTP/1.1\"\n2018-09-10T16:51:42.119Z"
  },
  {
    "path": "Install/data/apache.log",
    "chars": 1071,
    "preview": "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\" \"Moz"
  },
  {
    "path": "Install/data/date.log",
    "chars": 73,
    "preview": "2018-02-12T16:03:38 Ben\n2018-02-13T03:25:31 John\n2018-02-14T13:31:11 Leo\n"
  },
  {
    "path": "Install/data/ip-address.log",
    "chars": 79,
    "preview": "13.124.230.195:5601\n13.124.230.195:3306\n13.124.230.195:9200\n13.124.230.195:9300"
  },
  {
    "path": "Install/data/test.csv",
    "chars": 1289,
    "preview": "customer_card,seller_site,seller_rating,customer_sex,product_price,product_quantity,customer_age,customer_location,date_"
  },
  {
    "path": "Install/data/titanic-header.csv",
    "chars": 212,
    "preview": "Index,Name,Survival,Pclass,Sex,Age,SibSp,Parch,Ticket,Fare,Embarked\n1,Braund,0,3,male,22,1,0,A/5 21171,7.25,S\n2,Cumings,"
  },
  {
    "path": "Install/data/titanic.csv",
    "chars": 2310,
    "preview": "1,Braund,0,3,male,22,1,0,A/5 21171,7.25,S\n2,Cumings,1,1,female,38,1,0,PC 17599,71.2833,C\n3,Heikkinen,1,3,female,26,0,0,S"
  },
  {
    "path": "Install/data/titanic2.csv",
    "chars": 2232,
    "preview": "51,Panula,0,3,male,7,4,1,3101295,39.6875,S\n52,Nosworthy,0,3,male,21,0,0,A/4. 39886,7.8,S\n53,Harper,1,1,female,49,1,0,PC "
  },
  {
    "path": "Install/object/nginx-dashboard.json",
    "chars": 3198,
    "preview": "[\n  {\n    \"_id\": \"bd2418e0-6f26-11e8-a0fb-51f0eb991705\",\n    \"_type\": \"dashboard\",\n    \"_source\": {\n      \"title\": \"ngin"
  },
  {
    "path": "Install/object/nginx-visualizations.json",
    "chars": 24144,
    "preview": "[\n  {\n    \"_id\": \"7a9123a0-6f27-11e8-a0fb-51f0eb991705\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Install/object/shopping-dashboard.json",
    "chars": 3260,
    "preview": "[\n  {\n    \"_id\": \"AV-a4D_kMbjMXoGxGOm2\",\n    \"_type\": \"dashboard\",\n    \"_source\": {\n      \"title\": \"shopping\",\n      \"hi"
  },
  {
    "path": "Install/object/shopping-visualizations.json",
    "chars": 21941,
    "preview": "[\n  {\n    \"_id\": \"AV_Fp61Dju5h0m3erKmP\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \"shopping_timelio"
  },
  {
    "path": "README.md",
    "chars": 3814,
    "preview": "### Elastic Stack을 활용한 Dashboard 만들기\n---\n\n#### 안내\n\n* 이 repository는 지속적으로 업데이트가 진행된다. (`<>Code`, `Issues`, `Wiki`)\n* `bra"
  },
  {
    "path": "Week1_Kibana/code/es_conf.py",
    "chars": 591,
    "preview": "properties =  {\n  \"properties\": {\n    \"접수번호\" : {\"type\": \"integer\"},\n    \"주문시간\" : {\"type\" : \"date\"},\n    \"수령시간\" : {\"type\""
  },
  {
    "path": "Week1_Kibana/code/fake.py",
    "chars": 3713,
    "preview": "import datetime\nimport socket\nimport random\nimport struct\n\nfrom elasticsearch import Elasticsearch\n\ndef fake_data(es, na"
  },
  {
    "path": "Week1_Kibana/code/insert.py",
    "chars": 1378,
    "preview": "import os\nimport sys\nimport socket\nimport struct\nimport random\nimport datetime\n\nfrom elasticsearch import Elasticsearch\n"
  },
  {
    "path": "Week2_Kibana/code/timelion/all",
    "chars": 1346,
    "preview": "# index\n.es(index=nginx-*)\n\n# timefield\n.es(index=nginx-*, timefield=@timestamp)\n\n# metric\n.es(index=nginx-*, timefield="
  },
  {
    "path": "Week2_Kibana/code/timelion/exercise",
    "chars": 519,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=count\n).label(50이하), \n    \n.es(\n  index=nginx-*"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl10_scale_interval",
    "chars": 190,
    "preview": "# redable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=count\n).scale_interval(1m)\n\n# timelion code\n.es("
  },
  {
    "path": "Week2_Kibana/code/timelion/tl11_if",
    "chars": 346,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=count\n).if(\n    gte, \n    50, \n    .es(\n      i"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl1_index",
    "chars": 35,
    "preview": "# timelion code\n.es(index=nginx-*)\n"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl2_timefield",
    "chars": 122,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp\n)\n\n# timelion code\n.es(index=nginx-*, timefield=@timestamp"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl3_query",
    "chars": 223,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=count,\n  q=nginx.access.response_code:200\n)\n\n# "
  },
  {
    "path": "Week2_Kibana/code/timelion/tl4_metric",
    "chars": 207,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=sum:nginx.access.body_sent.bytes\n)\n\n# timelion "
  },
  {
    "path": "Week2_Kibana/code/timelion/tl5_indices",
    "chars": 385,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp,\n  metric=avg:nginx.access.body_sent.bytes\n).color(#00b8ff"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl6_label",
    "chars": 443,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp,\n  metric=avg:nginx.access.body_sent.bytes\n).color(#00b8ff"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl7_divide",
    "chars": 362,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp,\n  q=-nginx.access.response_code:200\n).divide(\n  .es(\n    "
  },
  {
    "path": "Week2_Kibana/code/timelion/tl8_offset",
    "chars": 406,
    "preview": "# readable code\n.es(\n  index=nginx-*, \n  timefield=@timestamp, \n  metric=count\n).label(현재).color(#00b8ff), \n\n.es(\n  inde"
  },
  {
    "path": "Week2_Kibana/code/timelion/tl9_range",
    "chars": 264,
    "preview": "# redable code\n.es(\n  index=nginx-*,\n  timefield=@timestamp,\n  metric=count,\n  q=nginx.access.response_code:200\n).label("
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/all",
    "chars": 540,
    "preview": "# keyword\n우리\n\n# Field Match\n결제카드:우리\n\n# Exact Field Match\n배송메모:\"상품 이상\"\n\n# Term\n상품분류: (\"니트\" \"코트\")\n\n# Fuzzy\n고객주소_시도:전라도~1\n\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/and",
    "chars": 40,
    "preview": "고객성별:여성 AND 상품분류:셔츠\n\n고객성별:여성 && 상품분류:셔츠\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/compound",
    "chars": 16,
    "preview": "여성 셔츠 +예약 -11번가\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/exact_field_match",
    "chars": 13,
    "preview": "배송메모:\"상품 이상\"\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/exercise",
    "chars": 147,
    "preview": "+_exists_: nginx.access.geoip.region_name +nginx.access.geoip.city_name: Se* -nginx.access.response_code: (\"200\", \"405\")"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/field_match",
    "chars": 8,
    "preview": "결제카드:우리\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/fuzzy",
    "chars": 14,
    "preview": "고객주소_시도:전라도~1\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/keyword",
    "chars": 3,
    "preview": "우리\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/negative",
    "chars": 12,
    "preview": "-구매사이트:11번가\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/not",
    "chars": 24,
    "preview": "NOT 구매사이트:옥션\n\n!구매사이트:옥션\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/numeric",
    "chars": 11,
    "preview": "상품가격:>5000\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/or",
    "chars": 39,
    "preview": "고객성별:여성 OR 상품분류:셔츠\n\n고객성별:여성 || 상품분류:셔츠\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/positive",
    "chars": 9,
    "preview": "+예약여부:예약\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/proximity",
    "chars": 22,
    "preview": "배송메모: \"내에 시간 배송 못함\"~2\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/range",
    "chars": 17,
    "preview": "고객나이: [10 TO 30}\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/term",
    "chars": 18,
    "preview": "상품분류: (\"니트\" \"코트\")\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/wildcard_1",
    "chars": 13,
    "preview": "고객주소_시도:전라?도\n"
  },
  {
    "path": "Week3_Kibana/code/lucene_query_syntax/wildcard_2",
    "chars": 8,
    "preview": "상품\\*:셔츠\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/arithmetic_operation_1",
    "chars": 74,
    "preview": "(doc['수령시간'].value.getMillis()-doc['주문시간'].value.getMillis())/1000/60/60\t\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/arithmetic_operation_2",
    "chars": 38,
    "preview": "doc['상품가격'].value * doc['상품개수'].value\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/concat_1",
    "chars": 44,
    "preview": "doc['고객성별'].value + '-' + doc['결제카드'].value\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/date_1",
    "chars": 27,
    "preview": "doc['주문시간'].date.hourOfDay\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/date_2",
    "chars": 27,
    "preview": "doc['주문시간'].date.dayOfWeek\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/date_3",
    "chars": 334,
    "preview": "# option 1\nLocalDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getHour()\t\n\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/date_4",
    "chars": 347,
    "preview": "# option 1\nLocalDateTime.ofInstant(Instant.ofEpochMilli(doc['주문시간'].value.millis), ZoneId.of('Asia/Seoul')).getDayOfWeek"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/date_5",
    "chars": 99,
    "preview": "Instant.ofEpochMilli(doc['주문시간'].date.millis).atZone(ZoneId.of(\"Asia/Seoul\")).dayOfWeek.getValue()\n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/if_1",
    "chars": 143,
    "preview": "if (doc['고객나이'].value < 20) { \n    return \"10대\" \n} \nelse if (doc['고객나이'].value < 40) { \n    return \"20~30대\" \n} \nelse { \n"
  },
  {
    "path": "Week3_Kibana/code/scripted_field/if_2",
    "chars": 126,
    "preview": "if (doc['상품개수'].value < 3) { \n  return \"저소비\" \n} \nelse if (doc['고객나이'].value < 6) { \n  return \"평균\" \n} \nelse {\n  return \"과"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/array/indexing",
    "chars": 189,
    "preview": "POST array/array\n{ \n  \"결제카드\" : [\"씨티\", \"국민\"],\n  \"고객성별\" : \"여성\",   \n  \"상품\" : [\n    {\n      \"구매사이트\" : \"쿠팡\",\n      \"분류\" : \"셔츠"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/array/mapping",
    "chars": 351,
    "preview": "PUT array\n{\n  \"mappings\": {\n    \"array\": { \n      \"properties\": {\n        \"결제카드\": {\n          \"type\": \"keyword\"\n        "
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/array/search",
    "chars": 254,
    "preview": "GET /array/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        { \n          \"match\": { \n            \"상품.구매사이트\":"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/nested/indexing",
    "chars": 191,
    "preview": "POST nested/nested\n{ \n  \"결제카드\" : [\"씨티\", \"국민\"],\n  \"고객성별\" : \"여성\",   \n  \"상품\" : [\n    {\n      \"구매사이트\" : \"쿠팡\",\n      \"분류\" : \""
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/nested/mapping",
    "chars": 381,
    "preview": "PUT nested\n{\n  \"mappings\": {\n    \"nested\": { \n      \"properties\": {\n        \"결제카드\": {\n          \"type\": \"keyword\"\n      "
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/nested/search_1",
    "chars": 379,
    "preview": "GET /nested/_search\n{\n  \"query\": {\n    \"nested\": {\n      \"path\": \"상품\",\n      \"query\": {\n        \"bool\": {\n          \"mus"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/nested/search_2",
    "chars": 379,
    "preview": "GET /nested/_search\n{\n  \"query\": {\n    \"nested\": {\n      \"path\": \"상품\",\n      \"query\": {\n        \"bool\": {\n          \"mus"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/object/indexing",
    "chars": 111,
    "preview": "POST shopping/shopping\n{ \n  \"고객주소_시도\": \"서울특별시\",\n  \"상품\": { \n    \"가격\": 27000,\n    \"분류\": \"팬츠\", \n    \"개수\": 7\n  }\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/complex/object/mapping",
    "chars": 368,
    "preview": "PUT object\n{\n  \"mappings\": {\n    \"object\": { \n      \"properties\": {\n        \"고객주소_시도\": {\n          \"type\": \"keyword\"\n   "
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/core/float",
    "chars": 977,
    "preview": "PUT my_index\n{\n  \"mappings\": {\n    \"my_type\": {\n      \"properties\": {\n        \"test-double\": {\n          \"type\": \"double"
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/core/numeric",
    "chars": 185,
    "preview": "PUT my_index\n{\n  \"mappings\": {\n    \"my_type\": {\n      \"properties\": {\n        \"test\": {\n          \"type\": \"byte\"\n       "
  },
  {
    "path": "Week4_Elasticsearch/code/data-type/core/string",
    "chars": 495,
    "preview": "PUT my_index\n{\n  \"mappings\": {\n    \"my_type\": {\n      \"properties\": {\n        \"test-keyword\": {\n          \"type\": \"keywo"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/add-document-post",
    "chars": 64,
    "preview": "POST week4_higee/week4_higee\n{\n  \"price\" : 5000,\n  \"age\" : 19\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/add-document-put",
    "chars": 264,
    "preview": "PUT week4_higee/week4_higee/1\n{\n  \"price\" : 10000,\n  \"age\" : 17\n}\n\nPUT week4_higee/week4_higee/2\n{\n  \"price\" : 2000,\n  \""
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/check-document-id",
    "chars": 31,
    "preview": "GET /week4_higee/week4_higee/1\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/delete-document-id",
    "chars": 33,
    "preview": "DELETE week4_higee/week4_higee/1\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/delete-document-query",
    "chars": 94,
    "preview": "POST week4_higee/_delet_by_query\n{\n  \"query\" : {\n    \"match\" : {\n      \"age\" : 20\n    }\n  }\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/exercise",
    "chars": 965,
    "preview": "# exercise2-without-mapping index 생성\nPUT exercise2-without-mapping\n\n# 다음과 같은 Document 생성 (type 이름 : exercise2)\nPOST exer"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/reindex-all-documents",
    "chars": 116,
    "preview": "POST _reindex\n{\n  \"source\": {\n    \"index\": \"week4_higee\"\n  },\n  \"dest\": {\n    \"index\": \"week4_higee_reindex\"\n  }\n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/reindex-some-documents",
    "chars": 209,
    "preview": "POST _reindex\n{\n  \"source\": {\n    \"index\": \"week4_higee\",\n    \"type\" : \"week4_higee\",\n    \"query\": {\n      \"term\": {\n   "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/update-document-id-all-fields",
    "chars": 68,
    "preview": "PUT week4_higee/week4_higee/3\n{\n  \"warning\" : \"해당 Document 전체 변경\"\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/update-document-id-some-fields",
    "chars": 75,
    "preview": "POST week4_higee/week4_higee/3/_update\n{\n  \"doc\": {\n    \"age\" : 50\n  } \n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/update-document-query",
    "chars": 322,
    "preview": "POST week4_higee/week4_higee/_update_by_query\n{\n  \"script\": {\n    \"source\": \"ctx._source['age'] = 50\"\n  },\n  \"query\": {\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/document/upsert-document",
    "chars": 214,
    "preview": "POST week4_higee/week4_higee/4/_update\n{\n  \"doc\" : {\n    \"price\" : 50000\n  },\n  \"doc_as_upsert\" : true\n}\n\nPOST week4_hig"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/add-mapping",
    "chars": 125,
    "preview": "PUT week4_higee\n\nPUT week4_higee/_mapping/week4_higee\n{\n  \"properties\": {\n    \"age\" : {\n      \"type\" : \"integer\"\n    }\n "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/check-mapping",
    "chars": 26,
    "preview": "GET week4_higee/_mapping \n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/check-mapping-template",
    "chars": 60,
    "preview": "PUT higee-log-2018.01.01\n\nGET higee-log-2018.01.01/_mapping\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/create-index",
    "chars": 16,
    "preview": "PUT week4_higee\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-template",
    "chars": 254,
    "preview": "PUT _template/template_higee\n{\n  \"template\" : \"higee-log-*\",\n  \"mappings\" : {\n    \"my_type\" : {\n      \"properties\" : {\n "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-with-index",
    "chars": 129,
    "preview": "PUT week4_higee\n\nPUT week4_higee/_mapping/week4_higee\n{\n  \"properties\" : {\n    \"price\" : {\n      \"type\" : \"integer\"\n    "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/create-mapping-without-index",
    "chars": 258,
    "preview": "DELETE week4_higee\n\nPUT week4_higee_mapping\n{\n  \"mappings\" : {\n    \"week4_higee_mapping\" : {\n      \"properties\" : {\n    "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/delete-index",
    "chars": 19,
    "preview": "DELETE week4_higee\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/indices/exercise",
    "chars": 1350,
    "preview": "# shopping index mapping 확인\nGET shopping/_mapping\n\n# shopping index와 동일한 index 생성\nPUT shopping \n{\n  \"mappings\": {\n    \"s"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/from-size",
    "chars": 95,
    "preview": "GET /shopping/_search\n{\n  \"from\" : 0, \n  \"size\" : 1,\n  \"query\" : {\n    \"match_all\" : {}\n  }\n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b",
    "chars": 168,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        { \"term\": { \"고객주소_시도\": \"서울특별시\"}},\n        { \""
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b-or-c",
    "chars": 272,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        { \"term\": { \"고객주소_시도\": \"서울특별시\"}}\n      ], \n  "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-b-or-c-or-d",
    "chars": 414,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        { \"term\": { \"고객주소_시도\": \"서울특별시\" }}\n      ], \n "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-and-not-b",
    "chars": 197,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        { \"term\": { \"고객주소_시도\": \"서울특별시\" }}\n      ],\n  "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-a-or-b",
    "chars": 203,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"should\": [\n        { \"term\": { \"고객주소_시도\": \"서울특별시\"}},\n        {"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Compound-queries/bool-example",
    "chars": 419,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        {\n          \"term\" : {\n            \"고객주소_시도\" "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Full-text-queries/match",
    "chars": 173,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"match\": {\n      \"배송메모\": \"배송 못함\"\n    }\n  }\n}\n\nGET /shopping/_search\n{\n  \"query\""
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Full-text-queries/query-string",
    "chars": 342,
    "preview": "GET /shopping/_search\n{\n  \"query\" : {\n    \"query_string\" : {\n      \"query\": \"고객나이 : [10 TO 25]\"\n    }\n  }\n}\n\nGET /shoppi"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Specialized-queries/script-query",
    "chars": 258,
    "preview": "GET /shopping/_search\n{\n  \"query\" : {\n    \"script\" : {\n      \"script\" : {\n        \"source\" :\n          \"\"\"Instant.ofEpoc"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/indexing",
    "chars": 80,
    "preview": "POST ml/doc\n{\n  \"keyword\" : \"Machine Learning\",\n  \"text\" : \"Machine Learning\"\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/keyword-match-search",
    "chars": 357,
    "preview": "GET ml/_search\n{\n  \"query\": {\n    \"match\": {\n      \"keyword\": \"machine\"\n    }\n  }\n}\n\nGET ml/_search\n{\n  \"query\": {\n    \""
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/keyword-term-search",
    "chars": 353,
    "preview": "GET ml/_search\n{\n  \"query\": {\n    \"term\": {\n      \"keyword\": \"machine\"\n    }\n  }\n}\n\nGET ml/_search\n{\n  \"query\": {\n    \"t"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/mapping",
    "chars": 195,
    "preview": "PUT ml\n{\n  \"mappings\": {\n    \"doc\": {\n      \"properties\": {\n        \"keyword\" : {\n          \"type\": \"keyword\"\n        },"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/text-match-search",
    "chars": 345,
    "preview": "GET ml/_search\n{\n  \"query\": {\n    \"match\": {\n      \"text\": \"machine\"\n    }\n  }\n}\n\nGET ml/_search\n{\n  \"query\": {\n    \"mat"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/TERM-VS-MATCH/text-term-search",
    "chars": 341,
    "preview": "GET ml/_search\n{\n  \"query\": {\n    \"term\": {\n      \"text\": \"machine\"\n    }\n  }\n}\n\nGET ml/_search\n{\n  \"query\": {\n    \"term"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/exists",
    "chars": 91,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"exists\" : { \n      \"field\" : \"상품분류\" \n    }\n  }\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/fuzzy",
    "chars": 247,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"fuzzy\" : {\n      \"고객주소_시도\" : \"경상북남\"\n    }\n  }\n}\n\n# parameters \nGET /shopping/_"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/prefix",
    "chars": 92,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"prefix\" : { \n      \"고객주소_시도\" : \"경상\" \n    }\n  }\n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/range",
    "chars": 116,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"range\": {\n      \"주문시간\": {\n        \"gte\": \"2017-02-15\"\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/term",
    "chars": 86,
    "preview": "GET /shopping/_search\n{\n  \"query\" : {\n    \"term\" : {\n      \"상품분류\" : \"셔츠\"\n    }\n  }\n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/terms",
    "chars": 96,
    "preview": "GET /shopping/_search\n{\n  \"query\" : {\n    \"terms\" : {\n      \"상품분류\" : [\"셔츠\", \"스웨터\"]\n    }\n  }\n}\n\n"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/Term-level-queries/wildcard",
    "chars": 216,
    "preview": "# wildcard : *\nGET /shopping/_search\n{\n  \"query\": {\n    \"wildcard\" : { \n      \"고객주소_시도\" : \"경*도\" \n    }\n  }\n}\n\n# wildcard"
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/query_dsl/match_all",
    "chars": 160,
    "preview": "# type 명시\nGET /shopping/shopping/_search\n{\n  \"query\" : {\n    \"match_all\" : {}\n  }\n}\n\n# type 생략\nGET /shopping/_search\n{\n "
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/sort",
    "chars": 142,
    "preview": "GET /shopping/_search\n{\n  \"query\": {\n    \"match_all\": {}\n  },\n  \"sort\": [\n    {\n      \"판매자평점\": {\n        \"order\": \"desc\""
  },
  {
    "path": "Week4_Elasticsearch/code/elasticsearch_API/search/source",
    "chars": 231,
    "preview": "GET /shopping/_search\n{\n  \"_source\": \"구매사이트\",\n  \"query\" : {\n    \"match_all\" : {}\n  }\n}\n\nGET /shopping/_search\n{\n  \"_sour"
  },
  {
    "path": "Week4_Elasticsearch/object/dashboard/nginx-dashboard.json",
    "chars": 3197,
    "preview": "[\n  {\n    \"_id\": \"bd2418e0-6f26-11e8-a0fb-51f0eb991705\",\n    \"_type\": \"dashboard\",\n    \"_source\": {\n      \"title\": \"ngin"
  },
  {
    "path": "Week4_Elasticsearch/object/dashboard/shopping-dashboard.json",
    "chars": 3299,
    "preview": "[\n  {\n    \"_id\": \"71dedc90-82c1-11e8-8161-3b4280559eb3\",\n    \"_type\": \"dashboard\",\n    \"_source\": {\n      \"title\": \"shop"
  },
  {
    "path": "Week4_Elasticsearch/object/search/nginx-search.json",
    "chars": 626,
    "preview": "[\n  {\n    \"_id\": \"de77bd70-6f31-11e8-a0fb-51f0eb991705\",\n    \"_type\": \"search\",\n    \"_source\": {\n      \"title\": \"[nginx]"
  },
  {
    "path": "Week4_Elasticsearch/object/visualization/nginx-visualization.json",
    "chars": 21215,
    "preview": "[\n  {\n    \"_id\": \"57d11570-6f2a-11e8-a0fb-51f0eb991705\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week4_Elasticsearch/object/visualization/shopping-visualization.json",
    "chars": 21422,
    "preview": "[\n  {\n    \"_id\": \"AWJgoeObzMQVnr-9Mxxc\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \"shopping_coordin"
  },
  {
    "path": "Week5_Logstash/code/filter/csv/autodetect-column-names.conf",
    "chars": 1313,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/csv/convert.conf",
    "chars": 1976,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/csv/separator.conf",
    "chars": 1274,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/date/date.conf",
    "chars": 543,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/date.log\"\n    start_position => \"beginning\"\n    sincedb_path => \""
  },
  {
    "path": "Week5_Logstash/code/filter/date/default.conf",
    "chars": 434,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/date.log\"\n    start_position => \"beginning\"\n    sincedb_path => \""
  },
  {
    "path": "Week5_Logstash/code/filter/drop/drop1.conf",
    "chars": 814,
    "preview": "input {                                                                                    \n  stdin {}                  "
  },
  {
    "path": "Week5_Logstash/code/filter/drop/drop2.conf",
    "chars": 2409,
    "preview": "input {                                                                                                    \n  file {    "
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example1.conf",
    "chars": 658,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access2.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example1_.conf",
    "chars": 658,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access2.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example2.conf",
    "chars": 1059,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access2.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example3.conf",
    "chars": 661,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access2.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example3.json",
    "chars": 174,
    "preview": "{\n  \"size\": 1,\n  \"sort\" : [ { \"@timestamp\" : \"desc\" } ],\n  \"_source\" : [\"@timestamp\"],\n  \"query\": {\n    \"term\": {\n      "
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example4.conf",
    "chars": 1062,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access2.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/filter/elasticsearch/example4.json",
    "chars": 259,
    "preview": "{\n  \"size\": 0,\n  \"sort\" : [ { \"@timestamp\" : \"desc\" } ],\n  \"query\": {\n    \"term\": {\n      \"nginx.access.geoip.ip\" : \"%{["
  },
  {
    "path": "Week5_Logstash/code/filter/grok/access.conf",
    "chars": 338,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access.log\"\n    start_position => \"beginning\"\n    sincedb_path =>"
  },
  {
    "path": "Week5_Logstash/code/filter/grok/apache.conf",
    "chars": 244,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/apache.log\"\n    start_position => \"beginning\"\n    sincedb_path =>"
  },
  {
    "path": "Week5_Logstash/code/filter/mutate/add_field.conf",
    "chars": 1854,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/mutate/remove_field.conf",
    "chars": 1937,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/mutate/split.conf",
    "chars": 1537,
    "preview": "input {                                                                                    \n  file {                    "
  },
  {
    "path": "Week5_Logstash/code/filter/ruby/example1.conf",
    "chars": 597,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/date.log\"\n    start_position => \"beginning\"\n    sincedb_path => \""
  },
  {
    "path": "Week5_Logstash/code/filter/ruby/example2.conf",
    "chars": 333,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/access.log\"\n    start_position => \"beginning\"\n    sincedb_path =>"
  },
  {
    "path": "Week5_Logstash/code/input/elasticsearch/elasticsearch.conf",
    "chars": 998,
    "preview": "input {                                                                                    \n  elasticsearch {           "
  },
  {
    "path": "Week5_Logstash/code/input/file/file-sincedb-path.conf",
    "chars": 614,
    "preview": "input {                                           \n  file {                                          \n    path => \"/usr/"
  },
  {
    "path": "Week5_Logstash/code/input/file/file-start-position.conf",
    "chars": 522,
    "preview": "input {                                            \n  file {                                           \n    path => \"/us"
  },
  {
    "path": "Week5_Logstash/code/input/file/file.conf",
    "chars": 101,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data/titanic.csv\"\n  }\n}\n\noutput {\n  stdout {\n  }\n}\n"
  },
  {
    "path": "Week5_Logstash/code/input/file/nginx.conf",
    "chars": 1378,
    "preview": "input {\n  file {\n    path => \"/usr/share/logstash/data2/access.log\"\n    start_position => \"beginning\"\n    sincedb_path ="
  },
  {
    "path": "Week5_Logstash/code/input/jdbc/jdbc-schedule.conf",
    "chars": 1474,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/input/jdbc/jdbc-sql-last-value-1.conf",
    "chars": 2074,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/input/jdbc/jdbc-sql-last-value-2.conf",
    "chars": 2074,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/input/jdbc/jdbc.conf",
    "chars": 1423,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/input/stdin/stdin.conf",
    "chars": 45,
    "preview": "input {\n  stdin {}\n}\n\noutput {\n  stdout {}\n}\n"
  },
  {
    "path": "Week5_Logstash/code/logstash.md",
    "chars": 2496,
    "preview": "### week5.pdf 실행 스크립트\n\n---\n#### input\n\n* stdin\n    * p 17 : `$ bin/logstash -f code/input/stdin/stdin.conf`\n\n* file\n    "
  },
  {
    "path": "Week5_Logstash/code/output/conditional.conf",
    "chars": 1230,
    "preview": "input {                                                                                    \n  stdin {}                  "
  },
  {
    "path": "Week5_Logstash/code/output/csv/csv.conf",
    "chars": 1194,
    "preview": "input {                                                                                    \n  elasticsearch {           "
  },
  {
    "path": "Week5_Logstash/code/output/elasticsearch/elasticsearch-dynamic-field-name-1.conf",
    "chars": 1640,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/output/elasticsearch/elasticsearch-dynamic-field-name-2.conf",
    "chars": 1782,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/output/elasticsearch/elasticsearch-stdout.conf",
    "chars": 1449,
    "preview": "input {                                                                                    \n  jdbc {\n    jdbc_validate_c"
  },
  {
    "path": "Week5_Logstash/code/output/elasticsearch/elasticsearch.conf",
    "chars": 1262,
    "preview": "input {                                                                                    \n  jdbc {                    "
  },
  {
    "path": "Week5_Logstash/code/output/stdout/stdout.conf",
    "chars": 71,
    "preview": "input {\n  stdin {}\n}\n\noutput {\n  stdout {\n    codec => rubydebug\n  }\n}\n"
  },
  {
    "path": "Week6_Review/solution/p44_template",
    "chars": 1566,
    "preview": "PUT _template/chicago-bike\n{\n  \"index_patterns\": \"chicago-bike*\",\n  \"mappings\": {\n    \"chicago-bike\": {\n      \"propertie"
  },
  {
    "path": "Week6_Review/solution/p46_logstash",
    "chars": 1565,
    "preview": "input {\n  jdbc {\n    jdbc_validate_connection => true\n    jdbc_connection_string => \"jdbc:mysql://52.78.134.20:3306/fc\"\n"
  },
  {
    "path": "Week6_Review/solution/p53-heatmap.json",
    "chars": 2274,
    "preview": "[\n  {\n    \"_id\": \"cd2bbaa0-8eb5-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p54-coordinate-map.json",
    "chars": 2064,
    "preview": "[\n  {\n    \"_id\": \"cdfa11b0-8eb6-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p55-coordinate-map.json",
    "chars": 2062,
    "preview": "[\n  {\n    \"_id\": \"db4c4180-8eb6-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p58-timelion.json",
    "chars": 624,
    "preview": "[\n  {\n    \"_id\": \"741ee020-8eb7-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p60-pie-chart.json",
    "chars": 1227,
    "preview": "[\n  {\n    \"_id\": \"c5a13310-8eb9-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p62-data-table.json",
    "chars": 1632,
    "preview": "[\n  {\n    \"_id\": \"5943d8c0-8eba-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p64-markdown.json",
    "chars": 482,
    "preview": "[\n  {\n    \"_id\": \"ce7e6010-8eba-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"visualization\",\n    \"_source\": {\n      \"title\": \""
  },
  {
    "path": "Week6_Review/solution/p65-dashboard.json",
    "chars": 2068,
    "preview": "[\n  {\n    \"_id\": \"ed5fa2e0-8eb6-11e8-bf09-e9fa0893099a\",\n    \"_type\": \"dashboard\",\n    \"_source\": {\n      \"title\": \"week"
  },
  {
    "path": "Week6_Review/solution/p66_query_dsl",
    "chars": 703,
    "preview": "GET chicago*/_search\n{\n  \"query\": {\n    \"bool\": {\n      \"must\": [\n        {\n          \"prefix\": {\n            \"to_statio"
  },
  {
    "path": "Week6_Review/solution/p67_logstash",
    "chars": 1212,
    "preview": "input {\n  elasticsearch {\n    hosts => [\"elasticsearch:9200\"]\n    index => \"chicago-bike-*\"\n    query => '{\n      \"query"
  },
  {
    "path": "Week6_Review/solution/p71_backup_logstash",
    "chars": 186,
    "preview": "input {\n  elasticsearch {\n    hosts => [\"elasticsearch.higee.co\"]\n    index => \"shopping\"\n  }\n}\n\noutput {\n  elasticsearc"
  },
  {
    "path": "Week6_Review/solution/p73_backup_reindex",
    "chars": 232,
    "preview": "POST _reindex\n{\n  \"source\": {\n    \"remote\": {\n      \"host\": \"http://elasticsearch.higee.co:80\"\n        },\n    \"index\": \""
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the higee/elastic GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 179 files (204.4 KB), approximately 65.6k tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!