6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Elasticsearch を Homebrew で macOS 上に構築

Posted at

環境

2020/10/2
Elasticsearch7
Homebrew 2.5.2


参考

Install Elasticsearch on macOS with Homebrew | Elasticsearch Reference [7.9] | Elastic

Install

Homebrewでインストールするには、最初にElasticHomebrewリポジトリをタップする必要があります。
Elastic Homebrewリポジトリをタップしたら、brewinstallを使用してElasticsearchのデフォルトのディストリビューションをインストールできます。

brew tap elastic/tap

brew install elastic/tap/elasticsearch-full

設定

Elasticsearchには3つの構成ファイルがあります。

  • elasticsearch.yml for configuring Elasticsearch
  • jvm.options for configuring Elasticsearch JVM settings
  • log4j2.properties for configuring Elasticsearch logging

これらのファイルはconfigディレクトリにあります。
Homebrewでインストールした場合、/usr/local/etc/elasticsearch/ に作成されました。

Configファイルの説明はここにあります

動作

設定ファイルを配置するフォルダを作成(どこでもよい)

作成したフォルダに移動して、
デフォルトの設定ファイルから最低限必要なものをコピーします。

cp /usr/local/etc/elasticsearch/elasticsearch.yml .
cp /usr/local/etc/elasticsearch/jvm.options .
cp /usr/local/etc/elasticsearch/log4j2.properties .

elasticsearch.yml

elasticsearch.yml の内容を以下のように書き換える。

your user nameは適宜変更する

elasticsearch.yml
cluster:
  name: mycluster
node:
  name: mynode
network:
  host: localhost
path:
  data: /Users/your user name/elastic_stack/data/
  logs: /Users/your user name/elastic_stack/log/

環境変数

環境変数 ES_PATH_CONF に上記で作成したフォルダをセットする
your user nameは適宜変更する

export ES_PATH_CONF=/Users/your user name/elastic_stack/elastic_local

環境変数を表示する

export -p

echo $ES_PATH_CONF

Elasticsearch の起動

elasticsearch コマンドで起動する

elasticsearch

確認

curl http://localhost:9200/

result

{
  "name" : "mynode",
  "cluster_name" : "mycluster",
  "cluster_uuid" : "2bxVVndhT3qYmc410DSmDA",
  "version" : {
    "number" : "7.9.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "d34da0ea4a966c4e49417f2da2f244e3e97b4e6e",
    "build_date" : "2020-09-23T00:45:33.626720Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

kibana

install

brew install kibana

Kibana起動する

起動

kibana

...省略
==> kibana
Config: /usr/local/etc/kibana/
If you wish to preserve your plugins upon upgrade, make a copy of
/usr/local/opt/kibana/plugins before upgrading, and copy it into the
new keg location after upgrading.

To have launchd start kibana now and restart at login:
  brew services start kibana
Or, if you don't want/need a background service you can just run:
  kibana

スクリーンショット 2020-10-02 20.03.36.png

データの追加

インデックスの作成

foo_index というインデックスを作成する。

curl --include -XPUT "http://localhost:9200/foo_index?pretty"

result

result
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "foo_index"
}

結果確認

curl --include -XGET "http://localhost:9200/foo_index?pretty"

result

result
{
  "foo_index" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1601883316655",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "KMD3KGVMSNSJEtUEJBT-xg",
        "version" : {
          "created" : "7090299"
        },
        "provided_name" : "foo_index"
      }
    }
  }
}

ドキュメントの追加

curl --include -XPOST "http://localhost:9200/foo_index/_doc?pretty" \
-H 'Content-Type: application/json' \
-d '{
  "foo_user": "Alice",
  "foo_message": "The night was young, and so was he. But the night was sweet, and he was sour."
}'

result

result
HTTP/1.1 201 Created
Location: /foo_index/_doc/i32x93QByjoFzGo__-wj
content-type: application/json; charset=UTF-8
content-length: 242

i32x93QByjoFzGo__-wj というIDが生成された。

結果確認

curl --include -XGET "http://localhost:9200/foo_index/_doc/i32x93QByjoFzGo__-wj?pretty"

result

result
{
  "_index" : "foo_index",
  "_type" : "_doc",
  "_id" : "i32x93QByjoFzGo__-wj",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "foo_user" : "Alice",
    "foo_message" : "The night was young, and so was he. But the night was sweet, and he was sour."
  }
}

2つ目のドキュメントも追加

curl --include -XPOST "http://localhost:9200/foo_index/_doc?pretty" \
-H 'Content-Type: application/json' \
-d '{
  "foo_user": "ボブ",
  "foo_message": "夜は若く、彼も若かった。が、夜の空気は甘いのに、彼の気分は苦かった。"
}'

result

result
HTTP/1.1 201 Created
Location: /foo_index/_doc/jH2193QByjoFzGo_t-w7
content-type: application/json; charset=UTF-8
content-length: 242

結果確認

curl --include -XGET "http://localhost:9200/foo_index/_doc/jH2193QByjoFzGo_t-w7?pretty"

result

result
{
  "_index" : "foo_index",
  "_type" : "_doc",
  "_id" : "jH2193QByjoFzGo_t-w7",
  "_version" : 1,
  "_seq_no" : 1,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "foo_user" : "ボブ",
    "foo_message" : "夜は若く、彼も若かった。が、夜の空気は甘いのに、彼の気分は苦かった。"
  }
}

データの全文検索

foo_message フィールドに「夜の空気」が含まれるドキュメントを検索するクエリを実行する。

curl --include -XGET "http://localhost:9200/foo_index/_search?pretty" \
-H 'Content-Type: application/json' \
-d '
{
  "query": {
    "match": {
      "foo_message": "夜の空気"
    }
  }
}'

result

result
{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 3.4337347,
    "hits" : [
      {
        "_index" : "foo_index",
        "_type" : "_doc",
        "_id" : "jH2193QByjoFzGo_t-w7",
        "_score" : 3.4337347,
        "_source" : {
          "foo_user" : "ボブ",
          "foo_message" : "夜は若く、彼も若かった。が、夜の空気は甘いのに、彼の気分は苦かった。"
        }
      }
    ]
  }
}

参考

Elasticsearch 7 を macOS 上に構築して全文検索をする - Qiita

Configuring Elasticsearch | Elasticsearch Reference [master] | Elastic

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?