ズッキーニのプログラミング実験場

プログラミング + アカデミック + 何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

   Mar 08

ElasticSearch にクライアントサイドjavascriptからクエリを投げてみる

by zuqqhi2 at 2014年3月8日
Pocket

作業環境

Ubuntu 12.04 LTS

関連情報

インストール方法

概要

20140308-es-outline

テストデータを準備

インデックスの作成

curl -XPOST 'http://localhost:9200/test' -d '{
  "settings": {
    "index": {
      "mapping.allow_type_wrapper": true
    }
  }
}'

> {"ok":true,"acknowledged":true}

タイプの作成

curl -XPUT 'http://localhost:9200/test/barley/_mapping' -d '{
    "barley" : {
        "properties" : {
            "place" : {"type" : "string", "index" : "not_analyzed"},
            "ha" : {"type" : "integer"},
            "kg" : {"type" : "integer"},
            "t" : {"type" : "integer"}
        }
    }
}'

> {"ok":true,"acknowledged":true}

テストデータのインサート

curl -X PUT http://localhost:9200/test/barley/1 -d '{
  "barley" : {
     "place":"北海道",
     "ha":1990,
     "kg":337,
     "t":6710} 
  }
}'

> {"ok":true,"_index":"test","_type":"barley","_id":"1","_version":1}

検索のテスト

curl -X GET http://localhost:9200/test/barley/_search -d '
{
  "query": {
    "match" : {"place" : "北海道"}
  }
}'

>{
>    "_shards": {
>        "failed": 0, 
>        "successful": 5, 
>        "total": 5
>    }, 
>    "hits": {
>        "hits": [
>            {
>                "_id": "1", 
>                "_index": "test", 
>                "_score": 0.30685282, 
>                "_source": {
>                    "barley": {
>                        "ha": 1990, 
>                        "kg": 337, 
>                        "place": "北海道", 
>                        "t": 6710
>                    }
>                }, 
>                "_type": "barley"
>            }
>        ], 
>        "max_score": 0.30685282, 
>        "total": 1
>    }, 
>    "timed_out": false, 
>    "took": 114
>}

JSの作成

ディレクトリ構成

.
├── scripts
│   ├── d3.v3.js
│   ├── elasticsearch.js
│   ├── main.js
│   └── require.js
└── test.html

ライブラリのダウンロード

.
├── scripts
│   ├── d3.v3.js           : wget http://d3js.org/d3.v3.min.js
│   ├── elasticsearch.js :  wget https://download.elasticsearch.org/elasticsearch/elasticsearch-js/elasticsearch-js-1.5.10.zip
│   ├── main.js
│   └── require.js         :  wget  http://requirejs.org/docs/release/2.1.11/minified/require.js
└── test.html

test.htmlの作成

<!DOCTYPE>
<html>
        <head>
                <script data-main="scripts/main" src="scripts/require.js"></script>
                <script>require(["main"], function () {})</script>
        </head>
        <body>
        </body>
</html>

main.jsの作成

define(['d3.v3', 'elasticsearch'], function (d3, elasticsearch) {
    "use strict";
    var client = new elasticsearch.Client({hosts:'sample.com:9200'});

    client.search({
        index: 'test',
        size: 1,
        body: {
            query: {
                bool: {
                    must: { match: { "place": "北海道" }},
                }
            }
        }
    }).then(function (resp) {
        console.log(resp);
        console.log(resp.hits.hits[0]._source.barley);
    });
});

あとはブラウザで作成したHTMLにアクセスすると結果が確認できる。

Related Posts

Pocket

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.