ElasticsearchElasticsearch 시작하기


비고

Elasticsearch는 Lucene을 기반으로하고 Java로 작성된 고급 오픈 소스 검색 서버입니다.

HTTP REST API를 통해 액세스 할 수있는 전체 텍스트 및 부분 텍스트, 쿼리 기반 및 Geolocation 기반 검색 기능을 분산 제공합니다.

버전

번역 출시일
5.2.1 2017-02-14
5.2.0 2017-01-31
5.1.2 2017-01-12
5.1.1 2016-12-08
5.0.2 2016-11-29
5.0.1 2016-11-15
5.0.0 2016-10-26
2.4.0 2016-08-31
2.3.0 2016-03-30
2.2.0 2016-02-02
2.1.0 2015-11-24
2.0.0 2015-10-28
1.7.0 2015-07-16
1.6.0 2015-06-09
1.5.0 2015-03-06
1.4.0 2014-11-05
1.3.0 2014-07-23
1.2.0 2014-05-22
1.1.0 2014-03-25
1.0.0 2014-02-14

예제가있는 기본 검색 매개 변수 :

기본적으로 전체 색인이 생성 된 문서는 모든 검색의 일부로 반환됩니다. 이를 소스 (검색 조회의 _source 필드)라고합니다. 전체 소스 문서가 반환되기를 원하지 않으면 소스 내에서 몇 개의 필드 만 반환하도록 요청하거나 _source 를 false로 설정하여 필드를 완전히 생략 할 수 있습니다.

다음 예제에서는 account_numberbalance ( _source 내부)의 두 필드를 검색에서 반환하는 방법을 보여줍니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}'
 

위의 예에서는 _source 필드에 반환 된 정보가 간단히 줄어 듭니다. _source 라는 필드 하나만 반환하지만 account_number 필드와 balance 만 포함됩니다.

SQL 배경에서 온 경우 위의 내용은 SQL 쿼리와 개념이 다소 비슷합니다.

SELECT account_number, balance FROM bank;
 

이제 쿼리 부분으로 넘어 갑시다. 이전에는 match_all 쿼리를 사용하여 모든 문서를 일치시키는 방법을 살펴 보았습니다. match 쿼리라고하는 새로운 쿼리를 소개합니다.이 쿼리는 기본 필드 검색 쿼리 (즉, 특정 필드 또는 필드 집합에 대해 수행되는 검색)로 생각할 수 있습니다.

이 예에서는 account_number20 설정된 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "account_number": 20 } }
}'
 

이 예에서는 address 에 "밀"이라는 용어가 포함 된 모든 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill" } }
}'
 

이 예는 address "mill"또는 "lane"이라는 용어가 포함 된 모든 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill lane" } }
}'
 

이 예제는 검색어를 용어로 나눠서 address 가 서로 다른 동일한 위치에있는 모든 검색어를 포함하는 문서 만 반환하는 match ( match_phrase )의 변형입니다 [1] .

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_phrase": { "address": "mill lane" } }
}'
 

이제 bool (ean) 쿼리를 소개합시다. bool 쿼리를 사용하면 부울 논리를 사용하여 더 작은 쿼리를 더 큰 쿼리로 작성할 수 있습니다.

이 예제는 두 개의 일치 쿼리를 작성하고 주소에 "mill"및 "lane"을 포함하는 모든 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

위의 예제에서 bool must 절은 문서가 일치하는 것으로 간주되어야하는 모든 쿼리를 지정합니다.

반대로이 예제는 두 개의 일치 쿼리를 작성하고 address "mill"또는 "lane"을 포함하는 모든 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "should": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

위의 예에서 bool should 절은 쿼리 목록을 지정합니다.이 중 하나는 일치해야한다고 간주되는 문서에 대해 true 여야합니다.

이 예제는 두 개의 일치 쿼리를 작성하고 address "mill"이나 "lane"을 포함하지 않는 모든 계정을 반환합니다.

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must_not": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

위의 예에서 bool must_not 절은 일치하는 것으로 간주되는 문서에 대해 참이 아니어야하는 쿼리 목록을 지정합니다.

bool 질의 내에서 must, should 및 must_not 절을 동시에 결합 할 수 있습니다. 또한, 우리는 복잡한 bool 논리를 모방하기 위해 이러한 bool 절들 중 bool 쿼리를 작성할 수 있습니다.

이 예는 정확히 40 세이며 워싱턴에 거주하지 않는 사람들에게 속한 모든 계정을 반환합니다 (즉, WA ).

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "WA" } }
      ]
    }
  }
}'
 

문서 인덱싱 및 검색

Elasticsearch는 일반적으로 cURL 라이브러리를 사용하여 HTTP REST API를 통해 액세스합니다. 검색 서버와 클라이언트 (사용자 또는 응용 프로그램) 간의 메시지는 JSON 문자열 형태로 전송됩니다. 기본적으로 Elasticsearch는 포트 9200에서 실행됩니다.

아래의 예제에서 Elasticsearch에게 JSON 응답을 미리 알려주기 위해 ?pretty 가 추가되었습니다. 응용 프로그램에서이 엔드 포인트를 사용할 때이 조회 매개 변수를 추가하지 않아도됩니다.

문서 인덱싱

나중에 색인 내의 정보를 업데이트하려는 경우 색인을 생성하는 문서에 고유 한 ID를 할당하는 것이 좋습니다. megacorp 라는 인덱스에 employee 및 ID 1 유형의 문서를 추가하려면 다음을 실행하십시오.

curl -XPUT "http://localhost:9200/megacorp/employee/1?pretty" -d'
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}' 
 

응답:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

 

PUT 호출을 보낼 때 색인이 존재하지 않으면 색인이 작성됩니다.

ID가없는 색인 생성

POST /megacorp/employee?pretty
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}
 

응답:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "AVYg2mBJYy9ijdngfeGa",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "created": true
}

 

문서 검색

curl -XGET "http://localhost:9200/megacorp/employee/1?pretty"
 

응답:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "first_name": "John",
    "last_name": "Smith",
    "age": 25,
    "about": "I love to go rock climbing",
    "interests": [
      "sports",
      "music"
    ]
  }
}

 

megacorp 인덱스에서 employee 유형의 문서 10 개를 가져옵니다.

curl -XGET "http://localhost:9200/megacorp/employee/_search?pretty"
 

응답:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 1,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      },
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "AVYg2mBJYy9ijdngfeGa",
        "_score": 1,
        "_source": {
          "first_name": "Jane",
          "last_name": "Smith",
          "age": 32,
          "about": "I like to collect rock albums",
          "interests": [
            "music"
          ]
        }
      }
    ]
  }
}

 

제공되는 필드에서 정확하게 일치하는 항목을 찾는 match 검색어를 사용한 간단한 검색 :

curl -XGET "http://localhost:9200/megacorp/employee/_search" -d'
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}'
 

응답:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.6931472,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 0.6931472,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      }
    ]
  }
}

 

CentOS 7에 Elasticsearch 및 Kibana 설치

Elasticsearch를 실행하려면 시스템에 Java Runtime Environment (JRE)가 필요합니다. Elasticsearch에는 Java 7 이상이 필요하며 Oracle JDK version 1.8.0_73 권장합니다.

따라서 시스템에 Java가 있는지 확인하십시오. 그렇지 않은 경우 다음 절차를 따르십시오.

# Install wget with yum 
yum -y install wget

# Download the rpm jre-8u60-linux-x64.rpm for 64 bit 
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"

# Download the rpm jre-8u101-linux-i586.rpm for 32 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jre-8u101-linux-i586.rpm"

# Install jre-.*.rpm
rpm -ivh jre-.*.rpm
 

Java는 이제 centOS 시스템에 설치되어야합니다. 다음을 사용하여 확인할 수 있습니다.

java -version
 

elasticsearch 다운로드 및 설치

# Download elasticsearch-2.3.5.rpm 
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.5/elasticsearch-2.3.5.rpm

# Install elasticsearch-.*.rpm
rpm -ivh elasticsearch-.*.rpm   
 

시작할 때 elasticdarch를 systemd 서비스로 실행

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

# check the current status to ensure everything is okay.
systemctl status elasticsearch
 

키바 나 설치하기

rpm에서 GPG 키 가져 오기

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
 

그런 다음 로컬 저장소 kibana.repo 만듭니다.

sudo vi /etc/yum.repos.d/kibana.repo 
 

그리고 다음 내용을 추가하십시오 :

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
 

이제 다음 명령을 사용하여 kibana를 설치하십시오.

yum -y install kibana
 

그것으로 시작하십시오 :

systemctl start kibana
 

상태 확인 :

systemctl status kibana
 

시작 서비스로 실행할 수 있습니다.

systemctl enable kibana
 

Ubuntu 14.04에 Elasticsearch 설치하기


선결 요건

Elasticsearch를 실행하려면 시스템에 Java Runtime Environment (JRE)가 필요합니다. Elasticsearch에는 Java 7 이상이 필요하며 Oracle JDK version 1.8.0_73 권장합니다.

Oracle Java 8 설치

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
 

Java 버전 확인

java -version
 

패키지 다운로드 및 설치

바이너리 사용하기

  1. 여기 Elasticsearch의 최신 안정 버전을 다운로드 하십시오 .
  2. 파일 압축 풀기 및 실행

Linux :

$ bin/elasticsearch
 

apt-get 사용하기

웹 사이트에서 elasticsearch를 다운로드하는 대신 apt-get 사용하여 설치합니다.

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo /etc/init.d/elasticsearch start
 

elasticsearch 버전 5.x 설치

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
 

Linux에서 서비스로 실행 :

설치 후 위의 내용은 자동으로 시작되지 않습니다. 그래서 우리는 그것을 서비스로 시작해야합니다. Elasticsearch를 시작하거나 중지하는 방법은 시스템에서 SysV init 또는 systemd를 사용하는지 여부에 따라 다릅니다. 다음 명령을 사용하여이를 확인할 수 있습니다.

ps -p 1
 

배포판에서 SysV init를 사용하고 있다면 다음을 실행해야합니다 :

sudo update-rc.d elasticsearch defaults 95 10
sudo /etc/init.d/elasticsearch start
 

그렇지 않으면 배포본이 systemd를 사용하는 경우 :

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
 

브라우저 또는 REST 클라이언트에서 CURL 명령을 실행하여 Elasticsearch가 올바르게 설치되었는지 확인하십시오.

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

Windows에 Elasticsearch 설치

선결 요건

Windows 용 Elasticsearch 버전은 https://www.elastic.co/downloads/elasticsearch 링크에서 구할 수 있습니다. 최신 안정 릴리스는 항상 맨 위에 있습니다.

Windows에서 설치하기 때문에 .ZIP 아카이브가 필요합니다. Downloads: 섹션에서 링크를 클릭하고 파일을 컴퓨터에 저장하십시오.

이 탄성 버전은 "휴대 가능"합니다. 즉, 프로그램을 사용하기 위해 설치 프로그램을 실행할 필요가 없습니다. 파일의 내용을 쉽게 기억할 수있는 위치에 압축을 풉니 다. 데모를 위해 우리는 모든 것을 C:\elasticsearch 풀 었다고 가정합니다.

아카이브라는 이름의 폴더가 포함되어 있습니다 elasticsearch-<version> 기본적를, 당신이 해당 폴더에 압축을 할 수 있습니다 C:\ 하고 이름을 변경 elasticsearch 만들거나 C:\elasticsearch 자신을, 다음 아카이브 폴더의 내용을 압축 해제 거기에.

Elasticsearch는 Java로 작성되었으므로 Java Runtime Environment가 작동해야합니다. 따라서 서버를 실행하기 전에 명령 프롬프트를 열고 다음을 입력하여 Java가 사용 가능한지 확인하십시오.

java -version
 

다음과 같은 응답을 받아야합니다.

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)
 

다음과 같이 표시되는 경우

'java'는 내부 또는 외부 명령, 작동 가능 프로그램 또는 배치 파일로 인식되지 않습니다.

Java가 시스템에 설치되어 있지 않거나 제대로 구성되지 않았습니다. 이 자습서 를 따라 Java를 (다시) 설치할 수 있습니다. 또한 다음 환경 변수가 비슷한 값으로 설정되어 있는지 확인하십시오.

변하기 쉬운
JAVA_HOME C : \ Program Files \ Java \ jre
통로 ...; C : \ Program Files \ Java \ jre

이러한 변수를 검사하는 방법을 아직 모르는 경우이 자습서를 참조하십시오.

배치 파일에서 실행

Java가 설치된 상태에서 bin 폴더를 엽니 다. 모든 것을 압축 해제 한 폴더에서 직접 찾을 수 있으므로 c:\elasticsearch\bin 아래에 있어야합니다. 이 폴더에는 명령 창에서 Elasticsearch를 시작하는 데 사용할 수있는 elasticsearch.bat 라는 파일이 있습니다. 즉, 프로세스가 기록한 정보가 명령 프롬프트 창에 표시됩니다. 서버를 중지하려면 CTRL C를 누르거나 단순히 창을 닫으십시오.

Windows 서비스로 실행

이상적으로 개발 중에 제거 할 수없는 추가 창을 원하지 않으므로 이러한 이유로 Elasticsearch를 서비스로 실행하도록 구성 할 수 있습니다.

Elasticsearch를 서비스로 설치하기 전에 C:\elasticsearch\config\jvm.options 파일에 행을 추가해야합니다.

서비스 설치 프로그램은 서비스를 설치하기 전에 스레드 스택 크기 설정을 jvm.options 구성해야합니다. 32 비트 Windows에서, 당신은 추가해야 -Xss320k [...] 및 64 비트 Windows에서 당신은 추가해야 -Xss1m 받는 jvm.options 파일. [출처]

변경 한 후에는 명령 프롬프트를 열고 다음 명령을 실행하여 bin 디렉토리로 이동하십시오.

C:\Users\user> cd c:\elasticsearch\bin
 

서비스 관리는 elasticsearch-service.bat 의해 처리됩니다. 이전 버전에서이 파일은 단순히 service.bat 라고 할 수 있습니다. 사용 가능한 모든 인수를 보려면 다음을 제외한 모든 인수를 실행하십시오.

C:\elasticsearch\bin> elasticsearch-service.bat

Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
 

출력 결과는 선택적 SERVICE_ID 인수가 있음을 나타내지 만 지금은 무시할 수 있습니다. 서비스를 설치하려면 다음을 실행하십시오.

C:\elasticsearch\bin> elasticsearch-service.bat install
 

서비스를 설치 한 후 해당 인수로 시작하고 중지 할 수 있습니다. 서비스를 시작하려면

C:\elasticsearch\bin> elasticsearch-service.bat start
 

그것을 멈추고, 달리고

C:\elasticsearch\bin> elasticsearch-service.bat stop
 

대신 GUI를 사용하여 서비스를 관리하려는 경우 다음 명령을 사용할 수 있습니다.

C:\elasticsearch\bin> elasticsearch-service.bat manager
 

그러면 Elastic Service Manager가 열리고 일부 서비스 관련 설정을 사용자 정의하고 첫 번째 탭 하단에있는 버튼을 사용하여 서비스를 중지 / 시작할 수 있습니다.