Java & Spring2019. 3. 27. 13:59

1. 기존에 오라클 또는 openjdk 구 버전이 설치되어있다면 다 삭제한다.

- openjdk-java 시리즈

# sudo apt-get remove openjdk*

- oracle-java 시리즈

# sudo apt-get remove oracle*

- 완료하고 나면 다음 명령어도 실행해주자.

# sudo apt-get autoremove --purge
$ sudo apt-get autoclean

2. oepnjdk 설치

# sudo apt install openjdk-11-jdk 

이렇게 설치하고 나서 자바 버전을 확인해보면 다음과 같이 나온다.

# sudo apt install openjdk-11-jdk
# java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

????

분명 11 설치했는데???

이것에 대한 이유는 다음 사이트에 가보면 대략 알 수 있다.

https://askubuntu.com/questions/1037646/why-is-openjdk-10-packaged-as-openjdk-11


그럼 실제 openjdk를 설치하려면 어떡해야 되지? 

다음과 같은 방법으로 설치하자.

# sudo add-apt-repository ppa:openjdk-r/ppa
# sudo apt install openjdk-11-jdk

자바11에 새롭게 도입된 String 클래스의 strip(), lines(), 또는 Collection에 새롭게 추가된 toArray()나 incubator에서 나온

HttpClient 같은 클래스를 사용하여 빌드할 땐 문제가 되기 때문에 11 버전으로 제대로 설치해줘야 한다.

성공적으로 설치가 된다면 다음과 같이 제대로 출력됨을 볼 수 있다.

# java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-Ubuntu-3ubuntu118.04ppa1)
OpenJDK 64-Bit Server VM (build 11.0.1+13-Ubuntu-3ubuntu118.04ppa1, mixed mode, sharing)

- 이상 끗~!

Posted by 홍규홍규
엘라스틱서치2019. 2. 26. 11:09

- Elasticsearch에서 제공하는 Type이 deprecated 되었습니다. 그것도 모르고 여태 써왔다니!!

  보통 RDB의 Table과 매칭시켜서 설명을 많이 했는데 deprecated된 김에 자세히 좀 들여다보았습니다.



6.0 이전까지는 하나의 Index에 복수의 Type을 지정해서 사용하는 것이 가능했습니다. 

마치 RDB의 Table처럼. 그리고 그 안에는 또 Document들이 저장되었습니다.


하지만 엄격히 말하면 Elasticsearch의 Type은 RDB의 Table과는 다릅니다.

Table의 경우 A라는 Table에 있는 name과 B라는 Table에 있는 name은 독립적이고 서로에게 아무런 

영향도 끼치지 않지만 Type의 경우엔 그렇지 않습니다.


A라는 Type의 name Field와 B라는 Type의 name Field는 내부적으로는 같은 루씬 Field를 사용합니다.

즉 두 Type의 name Field 모두 동일한 루씬 Field에 저장되며 두 Type 모두에서 동일한 mapping을 가집니다.

따라서 다른 Type의 동일한 Field는 서로 관련이 있게 되고, 이것이 내부적으로 몇 가지 문제를

야기할 가능성이 있다고 합니다.


그래서 6.0에서 deprecated되고 7.0부터는 아예 삭제가 되어 Type과 관련된 기능은 사용할 수 없게 됩니다.


중요한 것은 instead of, 즉 대안이 없습니다. 그냥 사용하면 안 됩니다.

7.0부터는 모든 Index는 단 하나의 Type(_doc)만을 가지게 됩니다.


따라서 Type으로 나누던 데이터 저장 방법을 Index로 나누는 걸로 변경해야 합니다.


혹시 더 좋은 방법 있으면 공유 좀...


- 관련 레퍼런스

https://www.elastic.co/guide/en/elasticsearch/reference/master/removal-of-types.html


- deprecated list

https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-high-level-client/7.0.0-alpha2/deprecated-list.html

Posted by 홍규홍규
엘라스틱서치2019. 2. 25. 13:39

1. 설치 환경

 - CentOS Linux 7 (release 7.3.1611)


2. Elasticsearch 다운로드 및 설치

 - Elasticsearch는 root계정으로는 실행할 수 없다. 따라서 계정을 추가하고 해당 계정으로 설치하고 실행해야 한다.

 - https://www.elastic.co/kr/downloads/elasticsearch 사이트 접속 후 MACOS/LINUX 의 링크 주소를 복사한다. 

   (현재 버전 6.6.1)

 - 리눅스 서버에 로그인하고 Elasticsearch를 다운받는다.

# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz

 - root가 아닌 계정으로는 rpm을 통해 설치할 수 없으므로 위처럼 wget 명령어를 사용한다.

 - 다운로드 후에는 다음 명령어를 통해 압축을 푼다.

# tar xvzf elasticsearch-6.6.0.tar.gz

압축이 풀리고 나면 실행할 수가 있는데, 로컬이 아닌 외부에서 서버로 접속할 수 있도록 ip와 port를 열어줘야 한다.


3. 방화벽 해제 후 ip와 port open

# firewall-cmd --permanent --zone=public --add-port=9200/tcp
# firewall-cmd --reload
# firewall-cmd --list-ports

 - Elasticsearch의 config폴더로 이동 후에 elasticsearch.yml을 편집합니다.

# cd elasticsearch-6.6.0/config/
# vi elasticsearch.yml

 - i를 눌러 편집모드로 전환한 후에 http.port 부분을 찾아서 주석을 해제하고 다음과 같이 설정한다.


 

 - http.host 에는 해당 리눅스의 서버 ip를 작성하면 된다.

 - 수정이 완료되었으면 Esc를 눌러 편집모드에서 빠져나온 후 :wq 를 입력해 저장하고 나온다.


4. Elasticsearch 실행

 - bin 폴더로 이동한 후 ./elasticsearch 를 입력하면 로그가 뜨면서 정상적으로 실행이 된다.


5. 테스트

 - 다음 화면과 같이 정상적으로 접속됨을 확인할 수 있다.

 

 




Posted by 홍규홍규