ES 중국어 학습 가이드---입문편

18861 단어
가장 간단한 것부터 색인 (indexing), 검색 (검색), 집합 (aggregations) 을 이해한다.
도구:Sense 플러그인, 헤드 플러그인
직원 목록 만들기
가령 우리가 Megacorp에서 일하고 있을 때 인적자원부서는 어떤 목적에서 직원 디렉터리를 만들어야 한다고 가정한다. 이 디렉터리는 인문적 배려를 촉진하고 실시간 협동 작업에 사용하기 때문에 다음과 같은 서로 다른 수요가 있다.
  • 데이터는 여러 값의 라벨, 숫자 및 일반 텍스트를 포함할 수 있습니다.
  • 직원의 모든 정보를 검색합니다.
  • 은 30세 이상의 직원을 찾는 등 구조화된 검색을 지원합니다.
  • 간단한 전문 검색과 더 복잡한 단어(phrase) 검색 지원
  • 하이라이트 검색 결과의 키워드
  • 은 차트 관리를 이용하여 이러한 데이터를 분석할 수 있습니다.
  • .
    1. ES에 문서를 직접 업로드하면 자동으로 색인을 만들 수 있고elasticsearch.yml 설정에 자동으로 색인을 만드는 기능을 취소하기 위해 action.auto_create_index: false을 추가합니다.
    수동으로 3개의 데이터를 삽입합니다.
    PUT /megacorp/employee/1
    {
        "first_name" : "John",
        "last_name" :  "Smith",
        "age" :        25,
        "about" :      "I love to go rock climbing",
        "interests": [ "sports", "music" ]
    }
    
    PUT /megacorp/employee/2
    {
        "first_name" :  "Jane",
        "last_name" :   "Smith",
        "age" :         32,
        "about" :       "I like to collect rock albums",
        "interests":  [ "music" ]
    }
    
    PUT /megacorp/employee/3
    {
        "first_name" :  "Douglas",
        "last_name" :   "Fir",
        "age" :         35,
        "about":        "I like to build cabinets",
        "interests":  [ "forestry" ]
    }

    자동으로 생성된 색인 결과는 다음과 같습니다.
    {
    
        "state": "open",
        "settings": {
            "index": {
                "creation_date": "1452563538027",
                "number_of_shards": "5",
                "number_of_replicas": "1",
                "uuid": "Vf1xw2nxRi20wsuByM5Yvw",
                "version": {
                    "created": "2010199"
                }
            }
        },
        "mappings": {
            "employee": {
                "properties": {
                    "about": {
                        "type": "string"
                    },
                    "last_name": {
                        "type": "string"
                    },
                    "interests": {
                        "type": "string"
                    },
                    "first_name": {
                        "type": "string"
                    },
                    "age": {
                        "type": "long"
                    }
                }
            }
        },
        "aliases": [ ]
    
    }

    2. 간단한 검색:
    GET /megacorp/employee/_search?q=last_name:Smith

    결과를 반환하려면 다음과 같이 하십시오.
    {
      "took": 3,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 2,
        "max_score": 0.30685282,
        "hits": [
          {
            "_index": "megacorp",
            "_type": "employee",
            "_id": "2",
            "_score": 0.30685282,
            "_source": {
              "first_name": "Jane",
              "last_name": "Smith",
              "age": 32,
              "about": "I like to collect rock albums",
              "interests": [
                "music"
              ]
            }
          },
          {
            "_index": "megacorp",
            "_type": "employee",
            "_id": "1",
            "_score": 0.30685282,
            "_source": {
              "first_name": "John",
              "last_name": "Smith",
              "age": 25,
              "about": "I love to go rock climbing",
              "interests": [
                "sports",
                "music"
              ]
            }
          }
        ]
      }
    }

    3. 복잡한 검색
    GET /megacorp/employee/_search
    {
        "query" : {
            "match" : {
                "last_name" : "Smith"
            }
        }
    }
    // smith , 。 GET
    /megacorp/employee/_search { "query" : { "filtered" : { "filter" : { "range" : { "age" : { "gt" : 30 } } }, "query" : { "match" : { "last_name" : "smith" } } } } }
    // 30 smith 。 GET
    /megacorp/employee/_search { "query" : { "match" : { "about" : "rock climbing" } } }
    // , about clock climbing 。

    {
      "took": 5,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
      },
      "hits": {
        "total": 2,
        "max_score": 0.16273327,
        "hits": [
          {
            "_index": "megacorp",
            "_type": "employee",
            "_id": "1",
            "_score": 0.16273327,
            "_source": {
              "first_name": "John",
              "last_name": "Smith",
              "age": 25,
              "about": "I love to go rock climbing",
              "interests": [
                "sports",
                "music"
              ]
            }
          },
          {
            "_index": "megacorp",
            "_type": "employee",
            "_id": "2",
            "_score": 0.016878016,
            "_source": {
              "first_name": "Jane",
              "last_name": "Smith",
              "age": 32,
              "about": "I like to collect rock albums",
              "interests": [
                "music"
              ]
            }
          }
        ]

    // 。
    GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } }, "highlight": { "fields" : { "about" : {} } } }
    // ↓ 。 GET
    /megacorp/employee/_search { "aggs": { "all_interests": { "terms": { "field": "interests" } } } } GET /megacorp/employee/_search { "query": { "match": { "last_name": "smith" } }, "aggs": { "all_interests": { "terms": { "field": "interests" } } } } GET /megacorp/employee/_search { "aggs" : { "all_interests" : { "terms" : { "field" : "interests" }, "aggs" : { "avg_age" : { "avg" : { "field" : "age" } } } } } } } }

    좋은 웹페이지 즐겨찾기