ElasticSearch 학습 및 조회

3550 단어 테스트 공유
최근에 검색엔진 Elastic Search를 접하고 간단하게 학습 기록을 작성했습니다.
 
ES 소스
ES는 ElasticSearch라고 불리며 분포식 전문 검색 엔진으로 Lucene(전문 검색 프레임워크)의 봉인과 개원을 바탕으로 한다.
 
ES의 기본 개념
색인(Index): 색인은 비슷한 특성을 가진 문서의 집합입니다.
색인은 유일한 표식으로 이름이 있어야 한다
이름은 소문자여야 합니다
이름은 문서를 통해 색인, 검색, 업데이트 및 삭제 작업을 수행합니다
유형(Type): 하나의 유형은 인덱스의 분류로 같은 인덱스에 서로 다른 유형의 문서를 저장할 수 있습니다.
문서(Document): 문서는 인덱스할 수 있는 데이터의 기본 단위인 인덱스 유형을 지정해야 합니다.문서는 JSON 형식으로 표현할 수 있습니다.
 
이해 색인
색인과 DB의 구조는 비교적 비슷하다. 하나의 ES 집단은 여러 개의 색인(indices) (데이터베이스) 을 포함할 수 있고, 모든 색인 라이브러리는 여러 종류의 (types) (표) 을 포함할 수 있으며, 각 유형은 여러 개의 문서(documents) (줄) 를 포함하고, 각 문서는 여러 개의 필드 (Fields) (열) 를 포함할 수 있다.
즉,
Elasticsearch -> 인덱스 라이브러리 Indices -> 유형 Types -> 문서 문서 -> 필드 필드 Fields 관계 데이터베이스(MYSQL) -> 데이터베이스 DB-> 표 TABLE-> 행 ROW -> 열 칼럼
 
DSL 질의
ES에서 제공하는 쿼리 언어를 DSL 쿼리(Query DSL)라고 하는데, DSL에는 특정 구문이 있습니다.
터미널에서 명령을 사용하여 호출할 수도 있고, Jmeter나 Postman 도구를 통해 ES 인터페이스를 직접 호출할 수도 있습니다.가장 자주 사용하는 검색은 구조 색인 검색과 키워드 결과의 검색이다.
도구 https 요청 문법: 도메인 이름: 포트/인덱스 이름/_search?pretty&q=city:"beijing"
터미널 호출 구문:
Index 구조를 질의합니다
$curl-XGET 도메인 이름: 포트/색인 이름/_doc/_mapping?pretty
{

  "index_name" : {

    "mappings" : {

      "_doc" : {

        "dynamic" : "strict",

        "properties" : {

          "city" : {

            "type" : "keyword"

          },

          "travel" : {

            "type" : "keyword"

          }

        }

      }

    }

  }

}

dynamic
dynamic은 mapping의 속성으로 새로 추가된 문서에 포함된 새 필드를 처리하는 방법을 정의합니다. 세 가지 값을 선택할 수 있습니다.
true, 새 문서에 새 필드를 포함할 수 있으며, 새 필드는 색인에 의해 검색되고 기본값입니다
false, 새 문서에 새 필드를 포함할 수 있지만, 문서에 포함된 새 필드는 인덱스할 수 없습니다
strict, 새 문서에 새 필드를 포함하는 것을 허용하지 않습니다
 
Index 특정 키워드를 질의합니다
$curl-XGET 도메인 이름: 포트/색인 이름/_doc/_search?pretty\&size=10\&q=city:"beijing"
{

  "took":2,

  "timed_out":false,

  "_shards":{"total":5,"successful":5,"failed":0},

  "hits":{

    "total":2,

    "max_score":1.0,

    "hits":[

      {

        "_index":"product",

        "_type":"_doc",

        "_id":"1",

        "_score":1.0,

        "_source": {

          "has_ticket": "yes",

          "city": "beijing",

          "travel": "The Great Wall",

        }

      },

      {

        "_index":"accounts",

        "_type":"person",

        "_id":"2",

        "_score":1.0,

        "_source": {

          "has_ticket": "yes",

          "city" : "beijing",

          "travel" : "Forbidden City",

        }

      }

    ]

  }}


결과를 반환하는 해석:
took: 되돌아오는 기록 총수
timed_out: 시간 초과 여부를 나타냅니다.
hits: 명중한 기록을 나타냅니다. hit 안의 하위 필드의 의미는 다음과 같습니다.
total: 반환 기록수, 본 예는 2개
         max_score: 가장 높은 일치 정도, 모든 기록이 되돌아오기 때문에_score 필드, 일치하는 정도를 표시합니다. 기본값은 이 필드의 내림차순으로 배열됩니다.
hits: 되돌아오는 상세한 기록으로 구성된 그룹
               _index: "crm", 문서 저장 위치 (인덱스)
               _type: "user", 문서 맵 형식
               _id: "1", 문서의 유일한 표지 (사용자 정의나 자동 생성)
               _score: 1.0, 일치도
               _소스: 구체적으로 반환된 데이터 내역

좋은 웹페이지 즐겨찾기