Elasticsearch를 Homebrew로 macOS에 구축

환경



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에는 세 가지 구성 파일이 있습니다.
  • 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/
    

    결과
    {
      "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
    



    데이터 추가



    색인 생성


    foo_index라는 인덱스를 만듭니다.
    curl --include -XPUT "http://localhost:9200/foo_index?pretty"
    

    결과

    결과
    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "foo_index"
    }
    

    결과 확인


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

    결과

    결과
    {
      "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."
    }'
    

    결과

    결과
    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"
    

    결과

    결과
    {
      "_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."
      }
    }
    

    두 번째 문서도 추가


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

    결과

    결과
    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"
    

    결과

    결과
    {
      "_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": "夜の空気"
        }
      }
    }'
    

    결과

    결과
    {
      "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

    좋은 웹페이지 즐겨찾기