ElasticSearch 학습 노트 (4) - 기본 작업

18983 단어 ElasticSearch

하나.데이터 조작

  • 지정된/Index/Type에 데이터를 삽입하여 PUT 요청을 보내면 Index에 레코드를 추가할 수 있습니다.예를 들어/accounts/person에 요청을 보내면 인원 기록을 추가할 수 있습니다
    PUT localhost:9200/accounts/person/1 
    {
     "user": " ",
     "title": " ",
     "desc": " "
    }
    서버가 반환하는 JSON 객체는 Index, Type, Id, Version 등의 정보를 제공합니다
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "1",
       "_version": 1,
       "result": "created",
       "_shards": {
           "total": 2,
           "successful": 2,
           "failed": 0
       },
       "_seq_no": 0,
       "_primary_term": 1
    }
    자세히 보면 요청 경로가/accounts/person/1이고 마지막 1은 이 기록된 Id입니다.그것은 반드시 숫자가 아니라 임의의 문자열 (예를 들어 abc) 도 가능하다.기록을 추가할 때 Id를 지정하지 않을 수도 있습니다. 이때 POST 요청으로 변경해야 합니다
    POST localhost:9200/accounts/person
    {
     "user": " ",
     "title": " ",
     "desc": " "
    }
    위 코드에서/accounts/person에 POST 요청을 하고 기록을 추가합니다.서버가 반환하는 JSON 객체에서,_id 필드는 무작위 문자열입니다
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "3CEKZmUBGSRFZPmXxRma",
       "_version": 1,
       "result": "created",
       "_shards": {
           "total": 2,
           "successful": 2,
           "failed": 0
       },
       "_seq_no": 2,
       "_primary_term": 1
    }
    먼저 Index를 만들지 않고 위의 명령을 실행하면 Elastic도 오류를 보고하지 않고 지정한 Index를 직접 생성합니다.인덱스 이름을 잘못 쓰지 않도록 데이터를 삽입할 때 조심해야 합니다..
  • 쿼리 데이터는/Index/Type/Id에 GET 요청을 하면 이 기록을 볼 수 있습니다..
    GET localhost:9200/accounts/person/1?pretty=true
    위의 코드는/accounts/person/1 이 기록을 보기를 요청합니다. URL의 매개 변수pretty=true는 읽기 쉬운 형식으로 되돌아옵니다.반환된 데이터 중,_found 필드는 질의가 성공했음을 나타냅니다. __소스 필드는 원본 기록을 되돌려줍니다
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "1",
       "_version": 2,
       "found": true,
       "_source": {
           "user": " ",
           "title": " ",
           "desc": " "
       }
    }
    Id가 정확하지 않으면 데이터를 찾을 수 없습니다._found 필드는 false..
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "2",
       "found": false
    }
  • 데이터 삭제 기록을 삭제하는 것은 DELETE 요청을 보내는 것입니다
    DELETE localhost:9200/accounts/person/1
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "1",
       "_version": 3,
       "result": "deleted",
       "_shards": {
           "total": 2,
           "successful": 2,
           "failed": 0
       },
       "_seq_no": 3,
       "_primary_term": 1
    }
  • 데이터 업데이트 기록은 PUT 요청을 사용하여 데이터를 다시 전송하는 것입니다
    PUT localhost:9200/accounts/person/1
    {
       "user" : " ",
       "title" : " ",
       "desc" : " , "
    }
    
    데이터를 삽입할 때 데이터가 존재하지 않으면 새 기록이 생성됩니다.반환 값에서result는created로 새 것을 표시합니다
    {
       "_index": "accounts",
       "_type": "person",
       "_id": "1",
       "_version": 1,
       "result": "created",
       "_shards": {
           "total": 2,
           "successful": 2,
           "failed": 0
       },
       "_seq_no": 4,
       "_primary_term": 1
    }

  • 2.데이터 조회

  • 모든 데이터 조회에 GET 메서드를 사용하여/Index/Type/_ 직접 요청search, 모든 기록을 되돌려줍니다
    localhost:9200/accounts/person/_search
    {
       "took": 261,
       "timed_out": false,
       "_shards": {
           "total": 5,
           "successful": 5,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": 2,
           "max_score": 1,
           "hits": [
               {
                   "_index": "accounts",
                   "_type": "person",
                   "_id": "3CEKZmUBGSRFZPmXxRma",
                   "_score": 1,
                   "_source": {
                       "user": " ",
                       "title": " ",
                       "desc": " "
                   }
               },
               {
                   "_index": "accounts",
                   "_type": "person",
                   "_id": "1",
                   "_score": 1,
                   "_source": {
                       "user": " ",
                       "title": " ",
                       "desc": " , "
                   }
               }
           ]
       }
    }
    위 코드에서 결과를 되돌려주는 took 필드는 이 작업의 소모 시간(밀리초)을 나타냅니다.timed_out 필드는 시간 초과 여부를 나타냅니다. hits 필드는 명중한 기록을 나타냅니다. 하위 필드의 의미는 다음과 같습니다.
  • total: 반환기록수, 본례는 2개..
  • max_score: 가장 높은 일치 정도, 본 예는 1.0..
  • hits: 되돌아오는 기록으로 구성된 수조..

  • 반환된 레코드 중 각 레코드에는 _score 필드, 일치하는 프로그램을 표시합니다. 기본값은 이 필드의 내림차순으로 배열됩니다
  • 전문 검색 Elastic의 조회는 매우 특별하다. 자신의 조회 문법을 사용하여 POST 요청에 데이터체가 있어야 한다.자세한 질의 방법은 공식 DSL 문서를 참조하십시오.https://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-dsl.html
    POST localhost:9200/accounts/person/_search
    {
     "query" : { "match" : { "desc" : " " }}
    }
    위 코드는 Match 조회를 사용합니다. 지정한 일치 조건은desc 필드에'소프트웨어'라는 단어가 포함되어 있습니다.반환 결과는 다음과 같습니다
    {
       "took": 256,
       "timed_out": false,
       "_shards": {
           "total": 5,
           "successful": 5,
           "skipped": 0,
           "failed": 0
       },
       "hits": {
           "total": 1,
           "max_score": 1.1978253,
           "hits": [
               {
                   "_index": "accounts",
                   "_type": "person",
                   "_id": "1",
                   "_score": 1.1978253,
                   "_source": {
                       "user": " ",
                       "title": " ",
                       "desc": " , "
                   }
               }
           ]
       }
    }
    Elastic 기본값은 한 번에 10개의 결과를 되돌려줍니다. 크기 필드를 통해 이 설정을 변경할 수 있습니다
    POST localhost:9200/accounts/person/_search
    {
     "query" : { "match" : { "desc" : " " }},
     "size": 1
    }
    from 필드를 통해 위치를 지정할 수 있습니다:
    POST localhost:9200/accounts/person/_search
    {
     "query" : { "match" : { "desc" : " " }},
     "size": 1,
     "from": 1
    }
    위 코드는 위치 1부터 (기본값은 위치 0부터), 결과 하나만 되돌려줍니다
  • 좋은 웹페이지 즐겨찾기