end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

install elasticsearch 8.15.2 from tar.gz to oracle linxu 8.7

全文検索のfessは触ったことがありますが、 fessが内部で使用する elasticsearch はありませんでしたので、hands-on

今回のポイントは

  • インストール自体は、tar.gz のダウングレードと解凍のみ
  • 設定やindex作成等、多くの作業はrest api(curlコマンド)で
  • 日本語やクラスタの設定は次回以降

参考url

install

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-x86_64.tar.gz
$ tar -xzf elasticsearch-8.15.2-linux-x86_64.tar.gz
$ cd elasticsearch-8.15.2/ 

初回起動と、rootパスワード確認

ここで発行されたパスワードは、この後のcurlコマンド実行時に使用します

$ bin/elasticsearch
Oct 09, 2024 6:28:03 PM sun.util.locale.provider.LocaleProviderAdapter <clinit>
WARNING: COMPAT locale provider will be removed in a future release
【略】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Elasticsearch security features have been automatically configured!
 Authentication is enabled and cluster connections are encrypted.

  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  mNXX=JAaEr+gVO5zDQhB ★
【略】

上記の bin/elasticsearch を起動したまま、以下のcurlコマンドで起動結果確認

$ curl --cacert config/certs/http_ca.crt -u elastic https://localhost:9200
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB
{
  "name" : "a64",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "_1Zg8GmwSdS8pk94jvNoPQ",
  "version" : {
    "number" : "8.15.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "98adf7bf6bb69b66ab95b761c9e5aadb0bb059a3",
    "build_date" : "2024-09-19T10:06:03.564235954Z",
    "build_snapshot" : false,
    "lucene_version" : "9.11.1",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

index作成と作成結果の確認 (今回のindex名は test_index )

index作成

$ curl --cacert config/certs/http_ca.crt -u elastic  -X PUT https://localhost:9200/test_index
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB
{"acknowledged":true,"shards_acknowledged":true,"index":"test_index"}

作成結果の確認

$ curl --cacert config/certs/http_ca.crt -u elastic https://localhost:9200/_aliases?pretty
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB
{
  ".security-7" : {
    "aliases" : {
      ".security" : {
        "is_hidden" : true
      }
    }
  },
  "test_index" : {
    "aliases" : { }
  }
}

$ curl --cacert config/certs/http_ca.crt -u elastic https://localhost:9200/_settings?pretty
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB
{
  "test_index" : {
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "test_index",
        "creation_date" : "1728501776101",
        "number_of_replicas" : "1",
        "uuid" : "274wN-66TZCwly5cWHO6ZQ",
        "version" : {
          "created" : "8512000"
        }
      }
    }
  }
}

検索データの登録による Mapping 作成

Mapping は Index の構造を定義するもので、 データを投入すると自動で Mapping 定義されるが、手動定義することも可能らしい

$ curl --cacert config/certs/http_ca.crt -u elastic \
  -H "Content-Type: application/json" -X PUT \
  https://localhost:9200/test_index/_doc/001 -d '{
    "subject" : "Test Post No.1",
    "description" : "This is the initial post",
    "content" : "This is the test message for using Elasticsearch."
}'
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB

{"_index":"test_index",
 "_id":"001",
 "_version":1,
 "result":"created",
 "_shards":{"total":2, "successful":1,"failed":0},
 "_seq_no":0,
 "_primary_term":1}

↑検索データの登録による Mapping 作成 ↓作成結果確認

$ curl --cacert config/certs/http_ca.crt -u elastic \
  https://localhost:9200/_mapping/?pretty
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB
{ "test_index" : {
    "mappings" : {
      "properties" : {
        "content" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "description" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "subject" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

登録した検索データの確認

$ curl --cacert config/certs/http_ca.crt -u elastic \
  https://localhost:9200/test_index/_doc/001?pretty
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB

{
  "_index" : "test_index",
  "_id" : "001",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "subject" : "Test Post No.1",
    "description" : "This is the initial post",
    "content" : "This is the test message for using Elasticsearch."
  }
}

検索テスト (例: 検索条件は [description] に [initial] 含む)

$ curl --cacert config/certs/http_ca.crt -u elastic \
  "https://localhost:9200/test_index/_search?q=description:initial&pretty=true"
Enter host password for user 'elastic': mNXX=JAaEr+gVO5zDQhB

{
  "took" : 58,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "test_index",
        "_id" : "001",
        "_score" : 0.2876821,
        "_source" : {
          "subject" : "Test Post No.1",
          "description" : "This is the initial post",
          "content" : "This is the test message for using Elasticsearch."
        }
      }
    ]
  }
}