Skip to main content

Calling elasticsearch in Play! java stack.

Calling elasticsearch in Play! java stack.

ㅇ index
0. play! installation
http://www.playframework.com/documentation/2.2.x/Installing
just download and make PATH
1. making play! app (esproject)
2. changing the app for eclipse
3. add elasticsearch libraries to play!
4. making the route for test (put elasticsearch index)
5. coding with sample util class
6. debugging the play!
7. run elasticsearch servers
8. monitoring elasticsearch
9. check out query result with java API


1. making play! app (esproject)
$> play new esproject
What is the application name? [esproject]
>(enter)
Which template do you want to use for this new application?
 1             - Create a simple Scala application
 2             - Create a simple Java application
> 2
OK, application esproject is created.
Have fun!

2. changing the app for eclipse

$> cd esproject/
$> play eclipse
~~~
[info] Successfully created Eclipse project files for project(s):
[info] esproject

3. add elasticsearch libraries to play!

3.1 mkdir /esproject/lib

3.2 copy jars to lib path
/esproject/lib/elasticsearch-1.0.0.jar
/esproject/lib/lucene-analyzers-common-4.6.1.jar
/esproject/lib/lucene-codecs-4.6.1.jar
/esproject/lib/lucene-core-4.6.1.jar
/esproject/lib/lucene-grouping-4.6.1.jar
/esproject/lib/lucene-highlighter-4.6.1.jar
/esproject/lib/lucene-join-4.6.1.jar
/esproject/lib/lucene-memory-4.6.1.jar
/esproject/lib/lucene-misc-4.6.1.jar
/esproject/lib/lucene-queries-4.6.1.jar
/esproject/lib/lucene-queryparser-4.6.1.jar
/esproject/lib/lucene-sandbox-4.6.1.jar
/esproject/lib/lucene-spatial-4.6.1.jar
/esproject/lib/lucene-suggest-4.6.1.jar

3.3 modify classpath
/esproject/.classpath

<classpathentry kind="lib" path="lib/elasticsearch-1.0.0.jar"/>
<classpathentry kind="lib" path="lib/lucene-core-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-analyzers-common-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-codecs-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queries-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-memory-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-highlighter-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-queryparser-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-sandbox-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-suggest-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-misc-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-join-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-grouping-4.6.1.jar"/>
<classpathentry kind="lib" path="lib/lucene-spatial-4.6.1.jar"/>

3.4 modify configuration file
/esproject/conf/application.conf

# elasticsearch
elasticsearch.clusterName = locketCast
elasticsearch.nodes = "localhost:9300,localhost:9301,localhost:9302"

4. making the route for test (put elasticsearch index)
/esproject/conf/routes

# http://localhost:9000/test/putIndex?id=1&indexString={"user_id":"doohee323", "action":"search", "data":"facebook Feed"}
GET     /test/putIndex        controllers.Esearch.putIndex(id:Long, indexString:String)

5. coding with sample util class
/esproject/app/controllers/Esearch.java
/esproject/app/services/ElasticsearchService.java

6. debugging the play!
6.1 run play! in debug mode
$> play debug
[esproject] $ Listening for transport dt_socket at address: 9999
[esproject] $ run

6.2 run eclipse debugger
eclipse Debug Configurations
Remote Java Application > new >
- Project : esproject
- Host : localhost
- Port : 9999

7. run elasticsearch servers
/data1/elasticsearch/node1> ./start.sh
/data1/elasticsearch/node2> ./start.sh
/data1/elasticsearch/node3> ./start.sh

browser call with 'http://localhost:9000/test/putIndex?id=1&indexString={"user_id":"doohee323", "action":"search", "data":"facebook Feed"}'

8. monitoring elasticsearch
8.1 check out the indexes
http://localhost:9200/_plugin/kopf

8.2 check out query result with rest API
http://localhost:9200/_search?q=user_id:doohee323
-> http://localhost:9200/updatelogs/20140428/_search
-> http://localhost:9200/updatelogs/20140428/_count?q=user_id:doohee323

9. check out query result with java API
/esproject/conf/routes
# http://localhost:9000/test/getIndex?queryString={"user_id":"doohee323"}
GET     /test/getIndex        controllers.Esearch.getIndex(queryString:String)

or execute /esproject/test/ElasticTest.java

cf.
- source: https://github.com/doohee323/esproject
- elasticsearch: https://github.com/doohee323/hanb-elasticsearch-beginner




Comments

Popular posts from this blog

Amazon RDS Blue/Green Deployments

In order to avoid some errors I experienced when proceeding as described in the official documentation, I describe what I did in order. 1) Modify parameters of source_database * error: Blue Green Deployments requires cluster parameter group has binlog enabled. RDS Parameter groups: source-params-group binlog_format => MIXED mysql> show global variables like 'binlog_format'; 2) Insert a row after rebooting the source database, to avoid this error. * error: Correct the replication errors and then switch over. Read Replica Replication Error - IOError: 1236, reason: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' => To Fix: You need to change the data in the source database. INSERT INTO dummy_table ( `favorite_id` , `favorite_order` , `user_id` , `board_id` ) VALUES ('100001', '1', '11111', '11111'); 3) Modify the param...

Fluentd for mysql in AWS

(0) preparation ulimit -n If your console shows 1024, it is insufficient. Please add following lines to your /etc/security/limits.conf file and reboot your machine. root soft nofile 65536 root hard nofile 65536 (1) install Fluentd // “Ubuntu 12.04 LTS / Precise” curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh /etc/init.d/td-agent start/stop/restart/status // test curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test /etc/init.d/td-agent stop chown: changing ownership of `/var/run/td-agent/td-agent.pid': Operation not permitted chown: changing ownership of `/var/run/td-agent': Operation not permitted  * Stopping td-agent td-agent                                                                                   ...

Install CoreOs on linode without VM

Install CoreOs on linode without VM 1. Add a Linode 2. Create a new Disk   CoreOS 3. Rescue > Reboot into Rescue Mode 4. Remote Access   Launch Lish Console 5. make an install script cat <<'EOF1' > install.sh # add needed package sudo apt-get update sudo apt-get install -y curl wget whois sudo apt-get install -y ca-certificates #sudo apt-get install gawk -y # get discovery url discoveryUrl=`curl https://discovery.etcd.io/new` # write cloud-config.yml cat <<EOF2 > cloud-config.yml #cloud-config users:   - name: core     groups:       - sudo       - docker coreos:   etcd:     name: node01     discovery: $discoveryUrl hostname: node01 EOF2 # get the coreos installation script #wget https://raw.github.com/coreos/init/master/bin/coreos-install wget https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install # run installation chmod 75...