この記事は余計なことを考えず、さくっとローカルで全文検索をやりたいって人のための簡易手順書です。

Elasticsearchとは

既に色々な所での解説があるので詳細は省略しますが、要はオープンソースの全文検索エンジンです。

Sudachiとは

いい感じの形態素解析。

この記事でやること、やらないこと

Docker環境が既に入っているローカルのPCにElasticsearchの環境を立ち上げ、文章を投入して検索してみるだけ。細かい設定などはしません。1年に一回くらい、手元にあるドキュメントに対して検索をかけたい瞬間があると思いますが、そんな時に以下の手順をなぞるだけ。全然大したことはやらないです、ほぼ自分用メモ。色々使う場合は、この記事を読みましょう。

導入手順

ここから、Dockerファイルを持ってきましょう。設定ファイルの内容は省略。

$ git clone https://github.com/peisuke/elasticsearch-docker.git
$ cd elasticsearch-docker
$ docker-compose build
$ docker-compose up -d

以上。Dockerコンテナを立ち上げてしばらく待ちましょう。立ち上がったかどうかは以下のコマンドで確認。

curl -X GET http://localhost:9200/

使ってみる

まずはサンプルの文章を投入してみましょう。投入はJSON形式で行います。ここではmytestがDB、testがテーブル、1がドキュメントの名前みたいなノリです。なおElasticsearch界ではIndex/Type/Documentって呼びます。

curl -X PUT http://localhost:9200/mytest/test/1 -H 'content-type: application/json' -d '
{
  "title" : "memo",
  "text"  : "hogehoge"
}'

次に検索をしてみましょう。

curl -X GET http://localhost:9200/mytest/test/_search -H 'content-type: application/json' -d '
{
  "query": {"match": {"title":"memo"}}
}'

結果として以下のように返ってきます。簡単ですね。

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "mytest",
        "_type": "test",
        "_id": "1",
        "_score": 0.2876821,
        "_source": {
          "title": "memo",
          "text": "hogehoge"
        }
      }
    ]
  }
}

片付け

停止する。

docker-compose down

全削除

docker-compose down --rmi all

その他

http://localhost:5601にアクセスすればkibanaで管理画面が見えたりするぞ