Elasticsearch 6.5.3 색인 관리 실험 기록

Elasticsearch 클러스터 학습 기록


1. Elasticsearch 색인 관리


새 색인 명령


PUT 인덱스 이름

색인 삭제


DELETE 인덱스 이름

색인 보기


GET 색인 이름/_settings
여러 색인을 동시에 볼 수 있습니다.GET 색인 이름 1, 색인 이름 2/_settings
클러스터의 모든 색인 정보를 보려면 다음과 같이 명령하십시오. GET _all/_settings

색인 열기 닫기


POST 인덱스 이름/_열기
POST 인덱스 이름/_close 닫기
여러 인덱스를 동시에 조작할 수 있습니다. 이 키워드를 모두 사용하십시오_all
 

2. Elasticsearch 문서 관리


새 문서


명령은 다음과 같습니다.
 
결과는 다음과 같다.
 
그 중에서 index/type/id는 문서의 위치를 확인하는 데 사용되며, 버전 번호는 문서의 업데이트에 따라 자동으로 증가합니다.shards는 분할 정보를 표시하는 데 사용됩니다.id를 지정하지 않으면 자동으로 생성됩니다.위의 예제에서는 id를 제거한 후 색인 문서 명령을 실행합니다.
 
응답 결과는 다음과 같습니다.
 
 

문서 가져오기


GET API를 사용하여 Elasticsearch에 저장된 문서를 봅니다.반환 형식은 json 형식입니다.
 
결과는 다음과 같습니다.
 
검색 문서가 존재하지 않으면 응답 정보는 "found":false
 
HEAD 명령을 사용하면 문서가 존재하는지 여부를 유지할 수 있습니다.
"200 - OK"를 반환하는 경우 "404-Not Found"를 반환합니다.
 
id에 따라 한 번에 여러 개의 문서를 가져오고, Muti GET API를 사용하여 색인 이름, 유형 이름, id(또는 루트)에 따라 한 번에 여러 개의 문서를 가져오고, 한 개의 문서 그룹을 되돌려줍니다.
GET blog/_mget

{

  "docs":[

      {

      "_type":"TypeA",

    "_id":"1"

    },

    {

      "_type":"typeB",

      "_id":"2"

    }

  ]

}

index에서 다른 type이면 다음과 같이 요약할 수 있습니다.
GET blog/article/_mget

{

  "docs":[

    {

      "_id":"1"

    },

    {

      "_id":"2"

    }

    ]

}


index와 type이 같으면 약어로
GET blog/article/_mget

{

  "ids":["1","2"]

}

문서 업데이트


문서가 인덱스된 후에 업데이트하려면 이 문서를 찾아야 합니다. 삭제하려면 문서 내용을 업데이트하고 업데이트한 후에 인덱스해야 합니다.
PUT test/type1/1

{

  "counter":1,

  "tags":["red"]

}



POST test/type1/1/_update

{

  "script":{

    "inline":"ctx._source.counter+=params.count",

    "lang":"painless",

    "params":{

      "count":4

    }

  }

}

라인은 실행 스크립트이고ctx는 스크립트 언어의 실행 대상입니다.painless는 Elasticsearch에 내장된 스크립트 언어이고params는 매개 변수 집합입니다.painless 스크립트를 사용하여 문서를 업데이트하고ctx를 통해 _소스는counter 필드,counter 필드 등과 원값에count 파라미터의 값을 추가합니다.
ctx 객체 처리 액세스 가능_source 이외에도 액세스 가능_index _type _id _version _routing _parent 등 필드.
 
GET test/type1/1

#explian painless is elasticsearch insert script language

POST test/type1/1/_update

{

  "script":{

    "inline":"ctx._source.tags.add(params.tag)",

    "lang":"painless",

    "params":{

      "tag":"blue"

    }

  }

}


필드 추가
POST test/type1/1/_update

{

  "script":"ctx._source.new_field= \"value_of_new_field\""

}


필드 삭제
POST test/type1/1/_update

{

  "script":"ctx._source.remove(\"new_field\")"

}

질의 업데이트


제목에git 키워드를 포함하는 문서에category 필드를 추가합니다.
POST blog/_update_by_query

{

  "script":{

    "inline":"ctx._source.category=params.category",

    "lang":"painless",

    "params":{"category":"git"}

  },

  "query":{

    "term":{"title":"git"}

  }

}

문서 삭제


Delete API는 지정된 id를 기반으로 인덱스 라이브러리에서 문서를 삭제할 수 있습니다. 문서 삭제 명령은 다음과 같습니다.
DELETE blog/article/1
문서를 색인할 때 라우팅을 지정한 경우 삭제할 때 라우팅 매개변수를 추가할 수도 있습니다.
DELETE blog/article/1?routing=user123
 

3. Elasticsearch 매핑 분석


매핑 보기


GET 색인 이름/_mapping
이 때 books 인덱스의 Mapping이 비어 있습니다. 문서 추가 명령은 다음과 같습니다.
 
추가한 후 Mapping을 보고 다음 결과를 반환합니다.
 
Id 、pulish_date,name가 추측하는 유형은 동적 반사 덕분이다.동적 매핑을 사용하려면 실제 업무 수요와 결합하여 종합적으로 고려해야 한다.만약elasticsearch를 주요 데이터 저장으로 사용하고 알 수 없는 필드가 발생할 때 이상을 던져서 이 문제를 주의하라고 알려주면 동적 맵핑을 켜는 것은 적용되지 않습니다.
예를 들어 다음 실례는 세 개의 문서를 쓰고, 세 번째는 "author"를 정의하지 않았기 때문에 이상을 던집니다.
 
 
 

날짜 검사


elasticsearch가 새로운 문자열 형식의 필드에 부딪히면 이 문자열이 식별할 수 있는 날짜를 포함하고 있는지 확인합니다. 만약에 날짜가 날짜 형식으로 식별되고 String 필드로 추가되는지 확인합니다. 이런 검사 메커니즘에 문제가 있습니다. 만약에 이런 문서가 elasticsearch에 있다고 가정합니다.
{“note”: ”2014-01-01”}
note 필드가 처음 발견되면 규칙에 따라date 필드로 추가됩니다. 다음 문서가 이렇다면:
{"note": "logged out"}, 이상이 발생합니다.date_detection은 날짜 검사를 닫기 위해false로 설정합니다.다음 명령은 다음과 같습니다.
 
결과
 
 
 
이상의 맵이 있으면, 문자열은 항상 String 형식으로 여겨지고,date 형식의 필드를 추가하려면 수동으로 추가해야 합니다.

정적 매핑


정적 매핑은 색인을 만드는 데 수동으로 색인 매핑을 지정하는 것으로 SQL이 테이블 문장에서 지정한 필드 속성과 유사합니다.동적 맵보다 정적 맵을 통해 더 상세하고 정확한 설정 정보를 추가할 수 있습니다.
 
실행 코드 오류 원인은 다음과 같습니다.
elasticsearch6.0.0 이상의 버전에서 생성된 인덱스는 하나의 맵 형식만 포함할 수 있습니다.있다x에서 여러 개의 매핑 이성을 가진 인덱스를 만들면 이전처럼 elasticsearch6에서 계속됩니다.x에서 일하다.맵 형식은elasticsearch7.0.0에서 완전히 삭제됩니다.
홈페이지 설명서: 링크
 
 
단독으로 맵을 실행하면 다음과 같습니다.
 
결과는 다음과 같다.
 
#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template  
기본 조각 수가 5에서 1로 7로 변경됩니다.x버전, 기본 5를 사용하려면 색인 템플릿이 있는 색인 요청을 새로 만들 수 있습니다
#! Deprecation: [_all] is deprecated in 6.0+ and will be removed in 7.0. As a replacement, you can use [copy_to] on mapping fields to create your own catch all field.
_모두x에서 사라집니다.속성 변경을 사용하려면copy_to .
 

필드 유형


Elasticsearch 필드 유형
일급 분류
이급 분류
구체적인 유형
핵심 유형
문자열 유형
string text keyword
숫자 유형
long integer short byte double float half_float scaled _float
날짜 유형
date
부울 유형
boolean
바이너리 유형
binary
범위 유형
range
복합 유형
배열 유형
array
객체 유형
object
중첩 유형
nested
지리적 유형
지리 좌표
geo_point
지리 도형
geo_shape
특수 유형
IP 유형
ip
범위 유형
completion
영패 계수 유형
token_count
첨부 파일 유형
attachment
추출 유형
percolator
 
유형 관련 참고 사항:
1. elasticsearch 5.x 이후의 필드는string 형식을 지원하지 않습니다.text나 키워드로 대체됩니다.
2. 한 필드가 전체 텍스트로 검색되려면text 형식으로 설정해야 합니다.이 유형은 단어로 구분되고 내용은 분리된다.정렬에 사용되지 않으며, 집합 (termAggregation 제외) 을 거의 사용하지 않습니다.
full_name 필드는 다음과 같이 텍스트 형식으로 설정됩니다.
PUT my_index

{

  "mappings":{

    "my_type":{

      "properties":{

        "full_name":{

          "type":"text"

        }

      }

    }

  }

}



 

 
3. 키워드 형식은 색인 구조화된 필드에 적합하다.예를 들어 이메일 주소, 호스트 이름, 상태 코드와 라벨.일반적으로 필터링, 정렬, 집합에 사용됩니다.키워드 형식의 필드는 텍스트 형식과 구별되는 정확한 값 검색이 필요합니다.
4. 숫자 유형 및 수치 범위
유형
값 범위
유형
값 범위
long
-2^64~2^63 -1
double
64비트 이중 정밀도 IEE754 부동 소수점 유형
integer
-2^31~2^32 -1
float
32비트 단일 정밀도 IEE754 부동 소수점 유형
short
-32768~32767
half_float
16비트 반정밀 IEE754 부동 소수점 유형
byte
-128~127
scaled_float
배율 유형의 부동 소수점
 
디지털 형식의 필드에 대해 수요를 만족시키는 상황에서 범위가 작은 데이터 형식을 최대한 선택한다.
필드의 길이가 짧을수록 검색과 인덱스의 효율이 높아집니다.
부동 소수점 처리 시 scaled_ 우선 고려float,elasticsearch 밑바닥은 정수 유형이고 압축 정수는 압축 부동점수보다 공간을 절약한다.
디지털 유형 구성 매핑의 예는 다음과 같습니다.
PUT my_index

{

  "mappings":{

    "my_type":{

      "properties":{

        "number_of_bytes":{"type":"integer"},

        "time_in_seconds":{"type":"float"},

        "price":{

          "type":"scaled_float",

          "scaling_factor":100

        }

      }

    }

  }

}

 
  • Elasticsearch 내부에서 날짜를 UTC(세계표준시간)로 변환하여 밀리세컨즈-since-the-epoch를 나타내는 긴 정형수로 저장합니다.날짜 형식은 사용자 정의할 수 있습니다

  • 날짜 형식 설정 맵의 예는 다음과 같습니다.
    PUT my_index
    
    {
    
      "mappings":{
    
        "my_type":{
    
          "properties":{"date":{"type":"date"}}
    
        }
    
      }
    
    }

     
    세 개의 문서 작성 결과는 다음과 같습니다.
       
     
       
    상기 3개 문서의 날짜 형식은 모두 해석할 수 있으며, 내부 저장은 밀리초 기술의 긴 정형수이다.
  • 부울 유형은 5.4 버전 이전에truefalse의 문자열과 숫자를 받아들일 수 있으며, 5.4 버전 이후에 문자열을 직접 말할 수 있다..

  • 매핑 구성의 예는 다음과 같습니다.
    PUT my_index
    
    {
    
      "mappings":{
    
        "my_type":{
    
          "properties":{
    
            "is_published":{"type":"boolean"}
    
          }
    
        }
    
      }
    
    }

     
    문서 3개 삽입
       
    질의 실행
       
    7,binary 형식은base64 인코딩된 문자열을 받아들여 기본적으로 저장하지 않고 검색할 수 없습니다.예는 다음과 같다.
     
    문서 쓰기
        
  • array의 모든 필드는 한 개 또는 여러 개의 값을 포함할 수 있으며, 한 그룹은 같은 유형이어야 한다.예 결과

  • 리메이크를 보완해야 하니 양해해 주십시오!

    좋은 웹페이지 즐겨찾기