Elasticsearch 추가 삭제 - 조회 받기

6260 단어
GET API는 Elasticsearch에서 자주 사용하는 작업으로 일반적으로 문서가 존재하는지 확인하는 데 사용됩니다.또는 CURD에서 문서 질의를 수행합니다.검색과 달리 GET 쿼리는 인덱스 결과를 실시간으로 조회할 수 있는 실시간 쿼리입니다.검색은 처리가 필요합니다. 보통 1초는 기본값이죠...검색할 수 있습니다.이러한 방법을 합리적으로 이용하면 Elasticsearch를 더욱 유연하게 사용할 수 있다.자세한 내용은 ELK 자습서 참조
이 문서를 읽어보니 자신이 많은 부분에 대해 잘 이해하지 못하는 것을 발견하였다.예를 들어 저장 메커니즘, 버전 유지 보수 등이다.일단은 단계적으로 공부를...후속 업데이트는 돌아와서 보충하고...

샘플 조회


Get API를 사용하면 ID 필드를 기반으로 Elasticsearch에서 JSON 문서를 질의할 수 있습니다. 다음은 질의의 예입니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1'

위의 명령은 트위터 인덱스의 트위터 형식에서 id가 1인 문서를 조회하고 결과를 다음과 같이 되돌려줍니다.
{
    "_index" : "twitter",
    "_type" : "tweet",
    "_id" : "1",
    "_version" : 1,
    "found": true,
    "_source" : {
        "user" : "kimchy",
        "postDate" : "2009-11-15T14:12:12",
        "message" : "trying out Elasticsearch"
    }
}

위에서 반환한 데이터는 문서의 기본 내용을 포함하고 _index 색인 이름, _type 유형, _id ID, _version 버전 번호입니다._source 필드에는 문서의 기본 내용이 포함되어 있습니다.found 필드는 찾을 수 있는지 여부를 나타냅니다.
이 API는 HEAD 방식으로 제출을 지원하므로 이 ID가 존재하고 쓸모없는 데이터가 반환되지 않는지 확인할 수 있습니다.
curl -XHEAD -i 'http://localhost:9200/twitter/tweet/1'

실시간


기본적으로 get API는 실시간이며 인덱스의 리셋 빈도에 영향을 받지 않습니다.(즉, 색인 데이터만 있으면 바로 조회할 수 있다는 것이다)
때때로 실시간 검색을 닫으려고 할 수도 있습니다. 이렇게 하면realtime=false를 설정할 수 있습니다.프로필에서 전역적으로 사용할 수 있도록 설정할 수도 있습니다. 즉, 설정action입니다.get.realtime은false입니다.
When getting a document, one can specify fields to fetch from it. They will, when possible, be fetched as stored fields (fields mapped as stored in the mapping). When using realtime GET, there is no notion of stored fields (at least for a period of time, basically, until the next flush), so they will be extracted from the source itself (note, even if source is not enabled). It is a good practice to assume that the fields will be loaded from source when using realtime GET, even if the fields are stored.문서를 조회할 때, 문서에서 특정한 필드를 얻을 수 있습니다.일반적으로 이 필드들은 저장될 수 있다.실시간 GET 조회를 사용할 때 이 저장된 필드를 무시하고 소스에서 필드 데이터를 가져옵니다. ---개인적으로 이 부분을 잘 이해하지 못해서 원문을 붙였으니 잘못 이해하면 바로잡아 주십시오.
맵 형식 중 필드에 몇 가지 속성이 있는 것을 기억합니다. 형식, 저장되었는지, 분석되었는지, 위에서 가리키는 것은 바로 이것이 저장되었을 것입니다.즉, GET가 조회할 때 이 저장된 필드에서 데이터를 찾지 않고 소스에서 직접 조회한다는 것이다.그러면 이 저장된 필드들은 무엇에 사용됩니까?잠시 적어 두어라...나중에 정리할 문서에서 만날 수 있을지도 몰라요!

유형 옵션


API 유형_type은 선택할 수 있습니다. 모든 종류를 조회하려면 _all 종류를 직접 지정하여 모든 종류와 일치시킬 수 있습니다.

소스 필터링


기본적으로 get 작업이 반환됩니다_fields 필드를 사용하거나 사용하지 않는 한 소스 필드입니다.설정 _source 속성을 통해 source 내용으로 돌아가는 것을 금지할 수 있습니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1?_source=false'

특정 필드를 되돌리려면 _source 또는 _source_include 를 사용하여 필터링할 수 있습니다.쉼표 구분을 사용하여 다음과 같은 다양한 일치 모드를 설정할 수 있습니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1?_source_include=*.id&_source_exclude=entities'

특정 필드로 돌아가려는 경우 필드의 이름을 직접 작성할 수도 있습니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1?_source=*.id,retweeted'

필드


get 작업을 통해 fields 필드를 설정하고 특정 필드를 되돌려줍니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1?fields=title,content'

요청한 필드가 저장되지 않으면source에서 분석합니다. 이 기능은source_필터를 대체합니다.
메타데이터, 예를 들면 _source_exclude_routing 은 영원히 되돌아오지 않을 것이다.
Also only leaf fields can be returned via the field option. So object fields can’t be returned and such requests will fail.필드 옵션을 통해서만 잎 필드를 되돌릴 수 있습니다.그래서 대상 필드는 되돌릴 수 없습니다. 이런 요청도 실패할 수 있습니다.

Generated fields


색인 작업을 완료하고 새로 고치지 않으면 GET 작업은translog의 내용을 읽어서 문서를 조회합니다.그러나 일부 필드는 색인할 때만 만들어진다.색인에서 생성된 필드를 읽으려고 시도하면 오류가 발생합니다.오류를 무시하려면 _parent 를 설정할 수 있습니다.
사실 개인도 이 생성 필드가 무슨 뜻인지 잘 몰라요?
그러나 이 Translog는 비교적 재미있다. 문서의 뒤에 소개된 것이다.인덱스된 데이터를 저장해야 하기 때문에 인덱스 하나로 Lucene 구조를 업데이트하는 것은 불가능하다.그래서translog를 만들었는데 데이터의 변동은 먼저translog에 넣고 es에 새로 고칩니다.실시간 조회는 사실translog에서 아직 오래가지 않은 데이터를 읽었습니다.

반환만_source


/{index}/{type}/{id}/_ 사용하기source는 반환만 가능_소스 필드입니다. 불필요한 정보를 너무 많이 되돌려 주지 않고 네트워크 대역폭을 낭비할 필요가 없습니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1/_source'

필터링 메커니즘을 사용할 수도 있습니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1/_source?_source_include=*.id&_source_exclude=entities'

또한 HEAD 방식을 사용하여 다음을 확인합니다.
curl -XHEAD -i 'http://localhost:9200/twitter/tweet/1/_source'

경로


색인할 때 루트를 지정하면 검색할 때 루트를 지정해야 합니다.
curl -XGET 'http://localhost:9200/twitter/tweet/1?routing=kimchy'

라우팅 정보가 올바르지 않으면 문서를 찾을 수 없습니다.

Preference


get 요청에 대한 분할 인덱스 유지 관리를 제어합니다. 이 인덱스는 다음과 같이 설정할 수 있습니다.
  • _primary 이 조작은 메인 화면에서만 실행됩니다.
  • _local 이 동작은 로컬 섹션에서 실행됩니다.
  • Custom(string)value 사용자는 값을 사용자 정의할 수 있으며, 같은 조각에 대해 같은 값을 설정할 수 있습니다.이렇게 하면 서로 다른 리셋 상태에서 서로 다른 블록을 조회할 수 있다.세션id나 사용자 이름처럼.

  • 새로 고침


    refresh 매개 변수는 get 전에 조각을 새로 고쳐서 이 값을 검색할 수 있도록 합니다.true를 설정할 때, 가능한 한 성능 문제를 고려해야 한다. 왜냐하면 매번 리셋할 때마다 시스템에 일정한 압력을 가져오기 때문이다

    분산


    get 작업은 특정한 해시 방법을 통해 요청을 특정한 섹션에 분배하여 조회합니다.분포식 환경에서 주 분할과 백업 분할은 하나의 그룹으로 get 요청을 지원할 수 있기 때문이다.이것은 조각의 수량이 많을수록 get이 실행하는 규모가 크다는 것을 의미한다.

    버전


    You can use the version parameter to retrieve the document only if it’s current version is equal to the specified one. This behavior is the same for all version types with the exception of version type FORCE which always retrieves the document.버전 파라미터를 사용하여 문서를 검색할 수 있지만, 버전 파라미터의 값은 현재 버전 번호와 같아야 합니다.버전 유형이 FORCE일 경우 모든 버전 유형에서 문서를 읽어들일 수 있습니다.
    es의 버전 번호에 대해 정말 철저하게 이해하지 못했는데...
    ES 내부에서는 삭제되거나 전체 대체 문서에 태그가 지정됩니다.오래된 버전의 문서는 즉각 삭제되지 않을 뿐만 아니라, 당연히 너도 그것에 접근할 수 없다.ES는 더 많은 공간 인덱스 데이터를 얻을 수 있도록 백그라운드에서 정리합니다.

    좋은 웹페이지 즐겨찾기