[Elasticsearch] ElasticSearch 기본 조회

8628 단어
elasticsearch 조회 용법을 배울 때 이 문장이 매우 상세하게 쓰여 있어서 나중에 보기 편리하도록 직접 옮겼습니다. 원문은 아래에 연결되어 있습니다.
저작권 성명: 본고는 블로거의 오리지널 문장으로 CC4.0 BY-SA 저작권 협의에 따라 원문의 출처 링크와 본 성명을 동봉합니다.본문 링크:https://blog.csdn.net/u014646662/article/details/89010759

1. 데이터 준비

put lib3
{
  "settings":{
    "number_of_shards":3,
    "number_of_replicas":0
  },
  "mappings":{
    "user":{
      "properties":{
        "name":{"type":"text"},
        "address":{"type":"text"},
        "age":{"type":"integer"},
        "interests":{"type":"text"},
        "birthday":{"type":"date"}
      }
    }
  }
}
 
post /lib3/user
{
  "name":"lisi",
  "address":"shandong",
  "age":18,
  "interests":"youyong shufa changge tiaowu",
  "birthday":"2001-01-19"
}
 
post /lib3/user
{
  "name":"wangwu",
  "address":"zhejiang",
  "age":22,
  "interests":"youyong shufa",
  "birthday":"1997-01-19"
}
 
post /lib3/user
{
  "name":"zhangsan",
  "address":"zhejiang",
  "age":20,
  "interests":"youyong shufa changge changpao",
  "birthday":"1999-08-29"
}
 
post /lib3/user
{
  "name":"youyong",
  "address":"zhejiang",
  "age":20,
  "interests":"youyong shufa changge changpao",
  "birthday":"1999-08-29"
}

테스트 해봐.
1 get /lib3/user/_search?q=name:lisi
2 get /lib3/user/_search?q=name:wangwu&sort=age:desc

2.term 조회와terms 조회

  • termquery는 역렬 인덱스에서 확실한term을 찾습니다. 분사기의 존재를 알지 못합니다.이런 검색은 키워드,numeric,date에 적합합니다..
  • term: 어떤 필드에 어떤 키워드가 포함된 문서를 조회합니다
  • terms: 어떤 필드에 여러 개의 키워드가 포함된 문서를 조회합니다
  • get /lib3/user/_search/
    {
      "query":{"term":{ "interests":"youyong"}}
    }
     
    get lib3/user/_search/
    {
      "query":{"terms":{"interests":["shufa","youyong"]}}
    }

    3. 조회가 되돌아오는 수량을 제어한다

    get lib3/user/_search
    {
      "from":0,
      "size":2,
      "query":{
        "terms":{
          "interests": ["changge","tiaowu"]
        }
      }
    }

    4. 버전 번호로 돌아가기

    get lib3/user/_search
    {
      "version":true,
      "query":{
        "term":{"interests": "changge"}
      }
    }

    5. match 조회

  • matchquery는 분사기의 존재를 알고 filed에 대해 분사 작업을 한 후에 조회합니다
  • match_all: 모든 문서를 조회합니다
  • multi_match: 여러 필드를 지정할 수 있습니다
  • match_phrase: 단어 일치 조회, ElasticSearch 엔진은 먼저 검색 문자열을 분석(analyze)하고 분석한 텍스트에서 단어 조회를 구축한다. 이것은 단어의 모든 단어를 일치시키고 각 단어의 상대적인 위치가 변하지 않도록 해야 한다는 것을 의미한다
  • GET lib3/user/_search
    {
      "query":{"match":{"age": 20}}
    }
    GET lib3/user/_search
    {
      "query":{"match":{"interests": "changge"}}
    }
     
    GET lib3/user/_search
    {
      "query":{
        "match_all": {}
      }
    }
     
    GET lib3/user/_search
    {
      "query":{
        "multi_match": {
          "query": "youyong",
          "fields":["interests","name"]
        }
      }
    }
     
    get lib3/user/_search
    {
      "query":{
        "match_phrase":{"interests": "youyong shufa"}
      }
    }

    6. 반환 필드, 표시 필드 지정

    get lib3/user/_search
    {
      "_source":["name","age"],
      "query":{
        "match": {
          "interests": "changge"
        }
      }
    }

    7. 원하는 필드를 표시하고 필요하지 않은 필드를 제거합니다.

    get lib3/user/_search
    {
      "query":{
        "match_all": {}
      },
      "_source":{
         "includes": "addr*",
         "excludes": ["name","bir*"]
      }
    }

    8, 정렬

  • 접두사 일치 조회 "match_phrase_prefix"
  • sort를 사용하여 정렬을 실현합니다:desc:내림차순,asc승차순
  • GET /lib3/user/_search
    {
        "query": {
            "match_phrase_prefix": {
              "interests": "you"
            }
        },
        
        "sort":[
          {
            "age":{"order": "desc"}
          }
          ]
    }

    9. 범위 조회

  • range: 범위 조회 실현
  • 매개 변수:from,to,include_lower,include_upper,boost
  • include_lower: 범위의 왼쪽 경계를 포함하는지 여부입니다. 기본값은true입니다
  • include_upper: 범위의 오른쪽 경계를 포함하는지 여부입니다. 기본값은true입니다
  • GET /lib3/user/_search
    {
        "query": {
            "range": {
                "birthday": {
                    "from": "1990-10-10",
                    "to": "2000-05-01",
                     "include_lower": true,
                    "include_upper": false
                }
            }
        }
    }
     
     
    GET /lib3/user/_search
    {
        "query": {
            "range": {
                "age": {
                    "from": 18,
                    "to": 25,
                    "include_lower": true,
                    "include_upper": false
                }
            }
        }
    }

    10. 와일드카드 조회

  • 와일드카드 * 및?조회하러 왔습니다
  • *는 0자 이상의 문자를 나타냅니다
  • ?임의의 문자를 대표합니다
  • GET /lib3/user/_search
    {
        "query": {
            "wildcard": {
                 "name": "wang*"
            }
        }
    }
     
     
    GET /lib3/user/_search
    {
        "query": {
            "wildcard": {
                 "name": "li?i"
            }
        }
    }

    11.fuzzy 모호한 조회 실현

  • value: 조회의 키워드
  • boost: 조회 권한, 기본값은 1.0입니다
  • min_similarity: 일치하는 최소 유사도를 설정합니다. 기본값은 0.5이고 문자열에 대해서는 0-1(0과 1 포함)입니다.수치에 대해 값이 1보다 클 수 있습니다.날짜형 수치가 1d, 1m 등이면 1d는 1일을 대표한다
  • prefix_length: 구분어 항목의 공통 접두사 길이를 가리키며, 기본값은 0입니다
  • max_expansions: 검색의 단어 항목이 확장될 수 있는 숫자입니다. 기본값은 무한대입니다
  • GET /lib3/user/_search
    {
        "query": {
            "fuzzy": {
                 "interests": "chagge"
            }
        }
    }
     
    GET /lib3/user/_search
    {
        "query": {
            "fuzzy": {
                 "interests": {
                     "value": "chagge"
                 }
            }
        }
    }

    12. 강조 검색 결과

    GET /lib3/user/_search
    {
        "query":{
            "match":{
                "interests": "changge"
            }
        },
        "highlight": {
            "fields": {
                 "interests": {}
            }
        }
    }

    좋은 웹페이지 즐겨찾기