ElasticSearch - 다중 색인 검색 및 대량 작업

19212 단어 elasticsearch
ElasticSearch의 속도는 이미 매우 빠르지만, 심지어는 더 빠를 수도 있다.여러 개의 요청을 하나로 합쳐서 모든 청구 통화료의 네트워크 지연과 비용을 단독으로 처리하는 것을 피한다.ElasticSearch에서 많은 문서를 검색하려면 multi_get 또는 mget API를 사용하여 이러한 검색 요청을 하나의 요청에 넣으면 문서 요청보다 모든 문서를 더 빨리 검색할 수 있습니다.mget API는 docs수조를 매개 변수로 하고 각 요소는 문서를 검색하는 메타데이터를 포함한다_index,_type,_id.특정 필드를 하나 이상 검색하려면 _source 파라미터를 통해 이 필드의 이름을 지정할 수 있습니다
curl -XGET 'http://localhost:9200/_mget' -d '
{
    "docs":[
        {
            "_index":"csdn",
            "_type":"blog",
            "_id":"1"
        },
        {
            "_index":"grade3",
            "_type":"class2",
            "_id":"1",
            "_source":["name","age"]
        }
    ]
}
'

필드 설명:
  • _index: 인덱스 이름
  • _type: 유형
  • _id:id
  • _소스: 출력에 필요한 필드 필터링
  • 만약 당신이 원하는 데이터가 같은 _index (또는 같은 _type 에 있다면, URL에서 기본 /_index 또는 /_index/_type 을 지정할 수 있지만, 이 값을 덮어쓸 수 있습니다.
    curl -XGET 'http://localhost:9200/csdn/blog/_mget' -d '
    {
        "docs":[
            {
                "_id":"1"
            },
            {
                "_index":"grade3",
                "_type":"class2",
                "_id":"1",
                "_source":["name","age"]
            }
        ]
    }
    '

    만약 당신이 원하는 데이터가 모두 동일_index과 동일_type에 있다면, 당신은 단지 하나ids의 데이터를 전달하면 됩니다.
    curl -XGET 'http://localhost:9200/csdn/blog/_mget' -d '
    {
        "ids":["7","8"]
    }
    '

    다음과 같은 결과가 반환됩니다.
    {
      "docs" : [
        {
          "_index" : "csdn",
          "_type" : "blog",
          "_id" : "7",
          "_version" : 6,
          "found" : true,
          "_source" : {
            "name" : "python developer",
            "addr" : "   ",
            "count" : 2,
            "favorite" : [
              "music",
              "football"
            ]
          }
        },
        {
          "_index" : "csdn",
          "_type" : "blog",
          "_id" : "8",
          "found" : false
        }
      ]
    }

    참고 ID가 8인 문서는 찾을 수 없지만 ID가 7인 문서는 찾을 수 없습니다.데이터에서 알 수 있듯이 ID가 8인 데이터를 찾을 수 없으면 {"found":false}로 돌아갑니다.그리고 데이터의 순서는 요청할 때 목록의 순서와 일치합니다.

    대량 작업 - bulk

    mget API가 여러 문서를 한 번에 가져올 수 있는 방식과 마찬가지로 bulk, create, indexupdate 요청을 한 번에 여러 번 수행할 수 있습니다.로그 이벤트 같은 데이터 양을 인덱스해야 한다면, 수백 번, 수천 번 줄을 서서 인덱스할 수 있습니다.
    bulk 기본 형식은 다음과 같습니다.
    {action:{metadata}}
    {request body}
    {action:{metadata}}
    {request body}
    ...

    이 형식은 유효한 JSON 문서 흐름과 유사하며 줄 바꿈 () 을 통해 연결됩니다.참고 사항:
  • 줄마다 끝, == 마지막 줄 포함 ==, 이것은 끝 표시이자 연결된 표시자
  • 각 줄에는 해석에 방해가 될 수 있기 때문에 전의되지 않은 줄 바꾸기 문자가 포함될 수 없습니다
  • 형식 설명:
  • {action: {metadata}}: 동작, 그리고 지정한 문서
  • {request body}: 세부 정보
  • action은 다음 옵션 중 하나여야 합니다.
  • create: 문서가 없으면 만들기
  • index: 새 문서를 만들거나 이전 문서를 덮어씁니다
  • update: 문서 일부 업데이트
  • delete: 문서 삭제
  • 예를 들어, 전체 요청delete은 다음과 같습니다.
    {"update":{"_index":"csdn","_type":"blog","_id":"1","_retry_on_conflict":5}}
    {"title":" "}

    위 코드는 제목 업데이트 작업입니다. 주의해야 할 것은 update 요청이 없습니다delete. 즉 완전한 request body 요청은 다음과 같습니다.
    {"delete":{"_index":"csdn","_type":"blog","_id":"1"}}

    모든 요청을 하나로 통합하여 완전한 delete 요청은 다음과 같다.
    curl -XPOST 'http://localhost:9200/_bulk' -d '
    {"delete":{"_index":"csdn","_type":"blog","_id":"1"}}
    {"create":{"_index":"csdn","_type":"blog","_id":"1"}}
    {"title":" "}
    {"index":{"_index":"csdn","_type":"blog"}}
    {"title":"index "}
    {"update":{"_index":"csdn","_type":"blog","_id":"1","_retry_on_conflict":5}}
    {"doc":{"title":" 1"}}
    '

    다음 결과가 반환됩니다.
    {
      "took" : 46,
      "errors" : false,
      "items" : [
        {
          "delete" : {
            "found" : true,
            "_index" : "csdn",
            "_type" : "blog",
            "_id" : "1",
            "_version" : 15,
            "result" : "deleted",
            "_shards" : {
              "total" : 2,
              "successful" : 1,
              "failed" : 0
            },
            "status" : 200
          }
        },
        {
          "create" : {
            "_index" : "csdn",
            "_type" : "blog",
            "_id" : "1",
            "_version" : 16,
            "result" : "created",
            "_shards" : {
              "total" : 2,
              "successful" : 1,
              "failed" : 0
            },
            "created" : true,
            "status" : 201
          }
        },
        {
          "index" : {
            "_index" : "csdn",
            "_type" : "blog",
            "_id" : "AV8zdG7wEgThxiHZqqaM",
            "_version" : 1,
            "result" : "created",
            "_shards" : {
              "total" : 2,
              "successful" : 1,
              "failed" : 0
            },
            "created" : true,
            "status" : 201
          }
        },
        {
          "update" : {
            "_index" : "csdn",
            "_type" : "blog",
            "_id" : "1",
            "_version" : 17,
            "result" : "updated",
            "_shards" : {
              "total" : 2,
              "successful" : 1,
              "failed" : 0
            },
            "status" : 200
          }
        }
      ]
    }

    되돌아오는 데이터를 보면 하나_bulk를 되돌려 모든 요청이 성공적으로 끝났음을 나타낸다. 만약에 관련 요청이 완성되지 않았거나 오류가 발생하면{"errors" : false}, 해당하는 요청에 오류 내역이 나타날 것이다.
    delete 요청 뒤에는 요청체가 있을 수 없고,delete 요청 뒤에는 요청체가 있을 수 없고,delete 요청 뒤에는 요청체가 있을 수 없습니다.마지막 줄도 줄을 바꾸고, 마지막 줄도 줄을 바꾸고, 마지막 줄도 줄을 바꾸어야 한다.중요한 일을 세 번 말하다
    아마도 당신이 색인한 데이터가 같은 {"errors" : true}index 중에서 모든 문서에 같은 메타데이터를 지정하는 것은 낭비일 것입니다.type API도 _bulk API와 유사한 기능을 가지고 있으며, URL에서 기본값_mget 또는 /_index을 지정할 수 있지만, 이 값을 덮어쓸 수 있습니다.
    curl -XPOST 'http://localhost:9200/csdn/blog/_bulk' -d '
    {"delete":{"_id":"1"}}
    {"create":{"_id":"1"}}
    {"title":" "}
    {"index":{"_index":"grade3","_type":"class2"}}
    {"title":"index "}
    '

    경량 검색의 다중 색인 다중 유형


    이전 블로그 ElasticSearch - 프로필에서 /_index/_type 소개했습니다. 우리는 URL을 통해 간단한 검색을 하는 방법을 알았지만 같은 색인 아래에서 같은 유형으로만 검색할 수 있습니다. 그러나 많은 경우 여러 색인과 여러 유형에서 검색할 수 있기를 바랍니다. 우리는 URL을 통해 특수한 색인과 유형을 지정할 수 있습니다.
  • 인덱스에서 검색
  • curl -XGET 'http://localhost:9200/csdn,grade3/_search'
  • c로 시작하거나 g로 시작하는 색인에서 검색
  • curl -XGET 'http://localhost:9200/c*,g*/_search'
  • csdn과grade3 인덱스,blog 형식과class2 형식에서 검색
  • curl -XGET 'http://localhost:9200/csdn,grade3/blog,class2/_search'
  • 모든 색인에서 검색
  • curl -XGET 'http://localhost:9200/_all/_search'

    좋은 웹페이지 즐겨찾기