목차

Elasticsearch

도큐먼트에서 텍스트 추출

도큐먼트에서 텍스트를 추출하는 데 특화된 라이브러리인 아파치 티카를 첨부 플러그인이 내부적으로 사용한다.

첨부 파일 필드는 아파치 티카의 메타데이터와 텍스트 추출기가 처리한 base64바이너리 스트림을 받는다.
이 필드는 하위 필드에 여러 내용을 저장하는 다중 필드처럼 보일 수 있다.

기본 타입 매핑하기

매핑을 세밀하게 조정하면, 다음과 같은 장점이 있다.

색인 생성하기

일래스틱서치는 색인 이름을 저장소의 디렉토리로 매핑한다.

curl -XPUT http://127.0.0.1:9200/myindex -d '{
  "settings": {
    "index": {
      "number_of_shards": 2,
      "number_of_replicas": 1
    }
  }
}'

정상 동작, 리턴

{"acknowledged": true}

색인이 이미 존재한다면, 400 에러를 리턴

{
  "error": "IndexAleardyExistsException[[myindex] Already exists]",
  "status": 400
}

색인 삭제하기

색인의 삭제는 샤드, 매핑, 데이터를 삭제하는 것을 의미한다. 다음처럼 색인을 삭제해야 하는 일반적인 시나리오가 있다.

색인을 삭제하면, 색인과 관련된 모든 데이터가 디스크에서 제거되고 사라진다.
색인 삭제 시 샤드가 저장소에서 삭제되면 먼저 클러스터가 변경된다. 재귀적으로 삭제하는 파일시스템 구현 때문에 일래스틱서치 삭제 자업은 빠르다.
백업이 없다면, 삭제된 색인은 복원할 수 없다.

색인 열고 닫기

curl -XPOST http://127.0.0.1:9200/myindex/_close

curl -XPOST http://127.0.0.1:9200/myindex/_open

색인을 닫아야 하는 시나리오는 다음과 같다.

색인에 매핑 저장하기

curl -XPOST 'http://localhost:9200/myindex/_mapping' -d '{
  "properties": {
    ...
  }
}'

매핑 얻기

리턴된 매핑은 축소된 형태로서, 필드의 기본값은 리턴하지 않는다.

매핑 질의는 다음과 같은 여러 목적으로 쓰인다.

매핑 삭제하기

매핑 삭제는 파괴적인 작업이며, 데이터 손실을 방지하도록 주의를 기울여 작업한다.
매핑 삭제가 필요한 시나리오는 다음과 같다.

색인 새로 고치기

curl -XPOST 'http://localhost:9200/myindex/_refresh'

health

http://[URL]:[PORT]/_cat/indices?v&s=index

health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   [index]  [uuid]   1   1          2            0     10.6kb         10.6kb

모든 doc 조회

http://URL/INDEX/_search?pretty=true&q=*:*

search query

http://[URL]:[PORT]/[INDEX]/_search?pretty

{
    "from": 0,
    "size": 1000,
    "sort": [
        {
           "updated_at": {
              "order": "asc"
           }
        }
    ],
    "query": {        
        "match": {
            "search": {
                "query": "스커트 타임",
                "fuzziness": "AUTO"
            }
        }
    }
}

count

http://[URL]:[PORT]/[INDEX]/_count?

{
    "count": 34384,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    }
}

ES와 RDBMS

ES RDBMS
Index Database
Shard Partition
Type Table
Document Row
Field Column
Mapping Schema
Query DSL SQL

Elastic Search는 기본적으로 http프로토콜로 접근

ES HTTP Method RDBMS SQL
GET SELECT
PUT INSERT
POST UPDATE, SELECT
DELETE DELETE
HEAD (인덱스 정보확인)

ES의 특징

장점

단점


관련 문서