ElasticSearch 학습노트 6 매핑 메타 필드(Mapping Meta-Fields)

18983 단어

ElasticSearch 학습노트 6 매핑 메타 필드(Mapping Meta-Fields)

  • Meta-Fields
  • Identity meta-fields(문서 표시 메타 필드)
  • _index
  • _uid
  • _type
  • _id
  • Document source meta-fields(원문 파일 필드)
  • _source
  • 비활성화_source
  • 포함 또는 제거_소스 필드의 필드
  • _size
  • Indexing meta-fields(인덱스 메타필드)
  • _all
  • _field_names
  • 비활성화_field_names
  • _ignored
  • Routing meta-field(라우팅 메타 필드)
  • _routing
  • meta-field(사용자 정의 메타필드)
  • Meta-Fields


    각 문서에는 연관된 메타필드가 있습니다. 예를 들어 _index、_type 및_id 메타필드.메타필드는 맵핑 맵에서 문서 자체의 정보를 설명하는 필드입니다.

    Identity meta-fields(문서 표시 메타필드)


    _index


    문서가 속한 색인.
    다중 색인 조회 시 특정 색인 이름에서만 조회할 수 있는 경우도 있습니다._인덱스 필드는 인덱스 이름에 대해term 조회,terms 조회, 집합 분석, 스크립트와 정렬을 할 수 있는 편리함을 제공합니다.
    _index는 가상 필드로 Lucene 인덱스에 추가되지 않습니다.index는term,terms 조회(match,query_string,simple_query_string도 포함)를 진행하지만prefix,wildcard,regexp,fuzzy 조회는 지원되지 않습니다.

    _uid


    _type 및_id의 조합
    elasticsearch6 및 그 후에 사용합니다.지금,_type 형식이 삭제되었습니다. 문서는_id 고유 표지,_uid 필드는 보기로만 _id 필드는 뒤로 호환됩니다.

    _type


    문서의 일치 유형입니다.
    elasticsearch6 및 그 후에 사용합니다.색인에 있는 모든 문서와 _type 및_id 유일한 연관성._type 필드 자체의 디자인 목표는 색인을 위한 빠른 검색입니다.검색, 집합, 정렬, 또는 스크립트에서 사용할 수 있습니다.

    _id


    문서의 id.
    문서마다 고유한_id는 GET API를 호출하거나 id를 조회할 때 더 빠른 위치 문서를 인덱스하여 저장합니다.
    elasticsearch6 이전에는 여러 종류의 존재를 지원하기 때문에 색인에서 유일하게 문서를 표시하는 데 _type 및_id, 또는_uid를 유일한 키로elasticsearch6 및 그 후_id는 인덱스의 유일한 키입니다.

    Document source meta-fields(원문 문서 필드)


    _source


    문서의 원본 json 문자열 문서 내용입니다.
    _소스 필드에는 색인 시간에 전달되는 원본 JSON 문서의 본문이 포함되어 있습니다._소스 필드 자체는 인덱스에 포함되지 않았지만, get이나 search 같은 요청을 실행할 때 되돌려줄 수 있도록 저장됩니다.기본_소스 필드가 열려 있습니다. 즉, 기본적으로 문서의 원시 값을 저장합니다.

    비활성화_source


    만약 어떤 필드의 내용이 매우 많거나 (예를 들어 소설) 검색 업무가 이 필드를 검색하고 문서 id로 돌아가서 다른 경로를 통해 문서 원문을 볼 필요가 없다면_소스 필드.비활성화 가능_ElasticSearch에 역렬 인덱스만 저장하고 필드의 원시 값을 보존하지 않습니다.
    PUT tweets
    {
      "mappings": {
        "_doc": {
          "_source": {
            "enabled": false
          }
        }
      }
    }
    

    포함 또는 제거_소스 필드의 필드


    문서를 저장하기 전에 색인에 정의할 수 있습니다_source 저장된 정보 저장되지 않은 정보 정의 맵
    PUT logs
    {
      "mappings": {
        "_doc": {
          "_source": {
            "includes": [
              "*.count",
              "meta.*"
            ],
            "excludes": [
              "meta.description",
              "meta.other.*"
            ]
          }
        }
      }
    }
    

    컨텐트 삽입
    PUT logs/_doc/1
    {
      "requests": {
        "count": 10,
        "foo": "bar" 
      },
      "meta": {
        "name": "Some metric",
        "description": "Some metric description", 
        "other": {
          "foo": "one", 
          "baz": "two" 
        }
      }
    }
    
    GET logs/_search
    {
      "query": {
        "match": {
          "meta.other.foo": "one" 
        }
      }
    }
    

    질의 결과는 다음과 같습니다.
    {
      "took": 58,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
          {
            "_index": "logs",
            "_type": "_doc",
            "_id": "1",
            "_score": 0.2876821,
            "_source": {
              "meta": {
                "other": {},
                "name": "Some metric"
              },
              "requests": {
                "count": 10
              }
            }
          }
        ]
      }
    }
    

    _size


    mapper-size 플러그인이 제공하는 계산 전체_소스 필드의 바이트 크기입니다.

    Indexing meta-fields(인덱스 메타 필드)


    _all


    _all 필드는 다른 필드를 한데 묶는 슈퍼 필드입니다. 모든 필드는 공백으로 구분됩니다._all 필드는 해석되고 인덱스되지만 저장되지 않습니다.키워드가 포함된 문서로 돌아가고 싶지만 필드를 정확하게 찾을 수 없을 때 _all 필드.기본값은 닫힙니다.
    elasticsearch6 및 그 후에 사용합니다.
    PUT /my_index
    {
      "mapping": {
        "user": {
          "_all": {
            "enabled": true   
          }
        }
      }
    }
    
    PUT /my_index/user/1      
    {
      "first_name":    "John",
      "last_name":     "Smith",
      "date_of_birth": "1970-10-24"
    }
    
    GET /my_index/_search
    {
      "query": {
        "match": {
          "_all": "john smith 1970"
        }
      }
    }
    

    위의 예에서_all은 이러한 색인 단어를 포함할 것입니다. [ "john", "smith", "1970", "10", "24" ], 색인 횟수의 조합 순서는 분사기에 의존합니다._all 이미 사용되지 않습니다.

    _field_names


    _field_names 필드는 인덱스 문서의 필드 값이null을 제외한 모든 필드의 이름을 포함합니다.일반적으로 이 필드를 사용하여 특정 필드에 대해 비어 있지 않거나 비어 있지 않은 문서를 찾습니다.
    현재, 일반적으로_field_names 필드에는 doc_만 포함됩니다.values 및 기본적으로 속성을 닫는 필드 이름입니다.

    비활성화_field_names

    PUT tweets
    {
      "mappings": {
        "_doc": {
          "_field_names": {
            "enabled": false
          }
        }
      }
    }
    

    _ignored


    elasticsearch 6.4 이후 메타필드 추가
    _ignored 메타필드 인덱스와 저장 문서에서 ignore_malformed 속성으로 인해 ignored의 모든 필드의 이름입니다.

    Routing meta-field(라우팅 메타 필드)


    _routing


    색인에 있는 문서는 다음 공식을 사용하여 특정 조각에 저장됩니다.
    shard_num = hash(_routing) % num_primary_shards
    

    기본적으로 사용되는 문서_id 필드의 값이 루트됩니다.
    사용자 정의 루트 모드는 각 문서의 사용자 정의 루트 값을 지정하여 실현할 수 있습니다.예:
    PUT my_index/_doc/1?routing=user1&refresh=true 
    {
      "title": "This is a document"
    }
    
    GET my_index/_doc/1?routing=user1 
    

    검색 결과
    {
      "_index": "my_index",
      "_type": "_doc",
      "_id": "1",
      "_version": 1,
      "_routing": "user1",
      "found": true,
      "_source": {
        "title": "This is a document"
      }
    }
    

    요청체 조회 방식은 다음과 같습니다.
    GET my_index/_search
    {
      "query": {
        "terms": {
          "_routing": [ "user1" ] 
        }
      }
    }
    

    meta-field(사용자 정의 메타필드)


    elasticsearch도 사용자 정의 메타데이터를 지원합니다.

    좋은 웹페이지 즐겨찾기