README.md in embulk-output-elasticsearch-0.1.8 vs README.md in embulk-output-elasticsearch-0.2.0

- old
+ new

@@ -7,30 +7,106 @@ * **Resume supported**: no * **Cleanup supported**: no ## Configuration +- **mode**: "insert" or "replace". See below(string, optional, default is insert) - **nodes**: list of nodes. nodes are pairs of host and port (list, required) - **cluster_name**: name of the cluster (string, default is "elasticsearch") - **index**: index name (string, required) - **index_type**: index type (string, required) - **id**: document id column (string, default is null) - **bulk_actions**: Sets when to flush a new bulk request based on the number of actions currently added. (int, default is 1000) - **bulk_size**: Sets when to flush a new bulk request based on the size of actions currently added. (long, default is 5242880) - **concurrent_requests**: concurrent_requests (int, default is 5) +### Modes + +#### insert: + +default. +This mode writes data to existing index. + +#### replace: + +1. Create new temporary index +2. Insert data into the new index +3. replace the alias with the new index. If alias doesn't exists, plugin will create new alias. +4. Delete existing (old) index if exists + +Index should not exists with the same name as the alias + +```yaml +out: + type: elasticsearch + mode: replace + nodes: + - {host: localhost, port: 9300} + index: <alias name> # plugin generates index name like <index>_%Y%m%d-%H%M%S + index_type: <index type> +``` + ## Example ```yaml out: type: elasticsearch + mode: insert nodes: - {host: localhost, port: 9300} index: <index name> index_type: <index type> ``` ## Build ``` -$ ./gradlew gem +$ ./gradlew gem # -t to watch change of files and rebuild continuously ``` + +## Test + +``` +$ ./gradlew test # -t to watch change of files and rebuild continuously +``` + +To run unit tests, we need to configure the following environment variables. + +When environment variables are not set, skip almost test cases. + +``` +ES_HOST +ES_PORT(optional, if needed, default: 9300) +ES_INDEX +ES_INDEX_TYPE +``` + +If you're using Mac OS X El Capitan and GUI Applications(IDE), like as follows. +``` +$ vi ~/Library/LaunchAgents/environment.plist +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Label</key> + <string>my.startup</string> + <key>ProgramArguments</key> + <array> + <string>sh</string> + <string>-c</string> + <string> + launchctl setenv ES_HOST example.com + launchctl setenv ES_PORT 9300 + launchctl setenv ES_INDEX embulk + launchctl setenv ES_INDEX_TYPE embulk + </string> + </array> + <key>RunAtLoad</key> + <true/> +</dict> +</plist> + +$ launchctl load ~/Library/LaunchAgents/environment.plist +$ launchctl getenv ES_INDEX //try to get value. + +Then start your applications. +``` \ No newline at end of file