ElasticSearch 시작 소개

6209 단어
ElasticSearch는 Apache Lucene을 기반으로 한 분산 검색 엔진으로 문서를 위한 검색 서비스를 제공합니다.본고는 6.2.3 버전을 예로 삼아 ElasticSearch의 응용을 소개한다.
본고는 먼저 ElasticSearch의 색인과 문서의 개념을 소개하고 시리즈의 다른 글에서 더욱 진일보한 소개를 한다.
디렉토리:
  • 문서 작성
  • 문서 액세스
  • 문서 업데이트
  • 문서 삭제
  • 홈페이지에서 압축 패키지를 다운로드하여 압축 해제 디렉터리에서 실행bin/elasticsearch하여 서비스를 시작하거나 패키지 관리자를 사용하여 시작을 설치할 수 있습니다.
    ES 기본 포트는 9200이며 ES를 로컬로 시작한 후 http://localhost:9200 GET 요청으로 ES의 기본 정보를 볼 수 있습니다.
    GET 'localhost:9200'
    {
      "name" : "hiTUe19",
      "cluster_name" : "elasticsearch_finley",
      "cluster_uuid" : "cfKnyFL1Rx6URmrmAuMBFw",
      "version" : {
        "number" : "5.1.2",
        "build_hash" : "c8c4c16",
        "build_date" : "2017-01-11T20:18:39.146Z",
        "build_snapshot" : false,
        "lucene_version" : "6.3.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    ElasticSearch는 3 계층 데이터 구조를 사용하여 데이터를 관리합니다.
  • 인덱스(index: 인덱스는 가장 높은 데이터 구조로 독립적인 검색 인덱스와 분할 저장 정책을 정의할 수 있다
  • 유형(type: index마다 여러 개의 type을 가지고 서로 다른 유형의 문서를 저장할 수 있습니다
  • 문서: 문서는 가장 기본적인 데이터 구조로 저장과 검색이 문서를 중심으로 전개된다
  • ElasticSearch의 문서는 Json 객체로 검색 결과는 문서의 집합이므로 문서에 대한 검색이라고 합니다.
    3층 데이터 구조에 대응하여 우리는 세 개의 필드를 사용하여 문서를 유일하게 식별할 수 있다.
  • _index: 문서가 있는 색인을 나타냅니다.색인 이름은 소문자로 시작해야 하며, 밑줄로 시작해서는 안 되고, 쉼표를 포함해서는 안 된다.
  • _type: 문서가 있는 유형 집합을 나타냅니다.type 이름은 대소문자로 시작할 수 있으며, 밑줄로 시작할 수 없고, 쉼표를 포함할 수 없습니다.
  • _id: type의 문서를 유일하게 표시하는 데 사용
  • 빈 질의 요청은 데이터 구조의 모든 문서를 나열합니다.
  • 모든 문서 나열: GET /_search
  • 색인blog 아래 모든 문서 목록: GET /blog/_search
  • 유형/blog/user 아래 모든 문서 목록: GET /blog/user/_search
  • 문서 작성

    IndexAPI 문서를 작성하는 데 사용할 수 있습니다.
    $ POST 'localhost:9200/blog/user/'
    content-type: application/json
    body:
    {
      "id": 1,
      "nickname": "finley"
    }
    response:
    {
        "_index": "blog",
        "_type": "user",
        "_id": "AV5WoO0MdsHuOObNBTWU",
        "_version": 1,
        "result": "created",
        "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
        },
        "created": true
    }
    

    POST 요청으로 문서를 만들고 url에서 지정_index_type, 요청체에서 json 형식으로 문서 데이터를 제출합니다._index 또는 _type에 ES가 없으면 자동으로 생성됩니다.위의 요청의 문서_id 필드는 ElasticSearch에서 작성되었으며 직접 지정할 수도 있습니다 _id.
    POST localhost:9200/blog/user/2/
    content-type: application/json
    {
      "id": 2,
      "nickname": "easy"
    }
    
    response:
    {
        "_index": "blog",
        "_type": "user",
        "_id": "2",
        "_version": 1,
        "result": "created",
        "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
        },
        "created": true
    }
    

    문서 액세스


    GET를 사용하여 문서에 액세스하려면 _index, _type_id 세 가지 매개변수로 문서를 고유하게 식별해야 합니다.
    GET localhost:9200/blog/user/2/
    response:
    {
        "_index": "blog",
        "_type": "user",
        "_id": "2",
        "_version": 2,
        "found": true,
        "_source": {
            "id": 2,
            "nickname": "easy"
        }
    }
    

    문서 업데이트


    문서를 수정한 후 색인을 업데이트하기 어렵기 때문에 ElasticSearch에서 문서를 수정하는 작업은 원래 문서를 삭제한 후 새 문서를 다시 추가하는 것입니다.IndexAPI를 사용하여 이미 존재하는 문서에 POST 요청을 보내면 문서가 업데이트됩니다.
    POST localhost:9200/blog/user/2/
    content-type: application/json
    {
      "nickname": "easy",
      "gender": "male"
    }
    
    response:
    {
        "_index": "blog",
        "_type": "user",
        "_id": "2",
        "_version": 2,
        "result": "updated",
        "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
        },
        "created": false
    }
    

    참고 _version, created, result 필드에 문서가 업데이트되었음을 표시합니다.GET 요청을 통해 업데이트된 문서를 보려면 다음과 같이 하십시오.
    GET localhost:9200/blog/user/2/
    {
      "_index": "blog",
      "_type": "user",
      "_id": "2",
      "_version": 2,
      "found": true,
      "_source": {
        "nickname": "easy2",
        "gender": ”male“
      }
    }
    

    이전 POST 요청에 의해 정의된 문서의 필드_id가 사라졌습니다.
    PUT 메서드를 통해 문서를 수정할 수도 있습니다.
    PUT localhost:9200/blog/user/2/
    content-type: application/json
    {
      "id": 2,
      "nickname": "easy3"
    }
    
    {
        "_index": "blog",
        "_type": "user",
        "_id": "2",
        "_version": 3,
        "result": "updated",
        "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
        },
        "created": false
    }
    

    GET 요청을 통해 문서가 수정되었는지 다시 확인합니다.
    GET localhost:9200/blog/user/2/
    {
      "_index": "blog",
      "_type": "user",
      "_id": "2",
      "_version": 3,
      "found": true,
      "_source": {
        "id": 2
        "nickname": "easy3",
      }
    }
    

    문서 삭제


    문서를 삭제하려면 DELETE 요청을 보내야 합니다.
    DELETE localhost:9200/blog/user/2/
    response:
    {
        "found": true,
        "_index": "blog",
        "_type": "user",
        "_id": "2",
        "_version": 4,
        "result": "deleted",
        "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
        }
    }
    

    좋은 웹페이지 즐겨찾기