Elastic Search 학습 노트 (2) 검색
문서 의 모든 필드 가 색인 되 고 조회 할 수 있 습 니 다. 。전체 텍스트 검색 은 키워드 와 일치 하 는 모든 문 서 를 찾 아 관련 성 (relevance) 에 따라 찾 을 수 있 습 니 다. 정렬 후 결 과 를 되 돌려 줍 니 다.
1. 빈 검색
API 를 검색 하 는 가장 기본 적 인 형식 은 어떤 검색 도 지정 하지 않 은 빈 검색 입 니 다. ,클 러 스 터 의 모든 색인 에 있 는 모든 문 서 를 간단하게 되 돌려 줍 니 다.
GET /_search
돌아 온 결과 (화면 을 위해 간결 하 게 편집 한 것) 이렇게:
{
"hits" : {
"total" : 14,
"hits" : [
{
"_index": "us",
"_type": "tweet",
"_id": "7",
"_score": 1,
"_source": {
"date": "2014-09-17",
"name": "John Smith",
"tweet": "The Query DSL is really powerful and flexible",
"user_id": 2
}
},
... 9 RESULTS REMOVED ...
],
"max_score" : 1
},
"took" : 4,
"_shards" : {
"failed" : 0,
"successful" : 10,
"total" : 10
},
"timed_out" : false
}
hits
결과 로 돌아 가 는 가장 중요 한 부분 은?
hits
,그것 포함 하 다 total
필드 는 일치 하 는 문서 의 총 수 를 표시 하고 하 나 를 표시 합 니 다. hits
배열 은 검색 결과 의 10 개 문 서 를 포함 합 니 다.... 에 있다
hits
배열 의 모든 결 과 는 문 서 를 포함 합 니 다. _index
、 _type
、 _id
,더 하 다 _source
필드이것 은 우리 가 되 돌아 오 는 검색 결과 에서 전체 문 서 를 직접 사용 할 수 있다 는 것 을 의미한다.이것 은 다른 검색엔진 과 는 달리 문서 의 ID 만 되 돌려 줍 니 다. 문 서 를 따로 가 져 와 야 합 니 다.결과 마다 하나 더 있어 요.
_score
,그것 은 문서 와 조회 의 일치 정 도 를 평가 했다.기본적으로 가장 관련 된 문서 결 과 를 되 돌려 줍 니 다. 즉, 되 돌아 오 는 문 서 는 _score
내림차 순 으로 배열 되 어 있다.이 예 에서 우 리 는 어떠한 조회 도 지정 하지 않 았 기 때문에 모든 문 서 는 같은 연관 성 을 가지 기 때문에 모든 결과 에 있어 서 1
중성 적 _score
。 max_score
값 은 검색 에 일치 하 는 문서 입 니 다. _score
의 최대 치.took
took
전체 검색 요청 을 수행 하 는 데 몇 밀리초 가 걸 렸 는 지 알려 줍 니 다.shards
_shards
부분 적 검색 에 참여 한 영화 의 총수 와 이 영화 들 이 몇 개 성 공 했 는 지, 몇 개 실 패 했 는 지 알려 주세요.정상 적 인 상황 에서 우 리 는 영화 분할 실 패 를 원 하지 않 지만, 영화 분할 실 패 는 발생 할 수 있다.만약 우리 가 재난 수준의 고장 을 당 한다 면, 이 고장 에서 같은 조각의 원시 데이터 와 복사 본 을 잃 어 버 렸 다 면, 이 조각 에 대해 서 는 검색 요청 에 응답 할 수 있 는 복사 본 이 없 을 것 이다.만약 그렇다면 Elasticsearch 는 이 필름 이 실 패 했 음 을 보고 하지만 나머지 필름 의 결 과 를 계속 되 돌려 줍 니 다.timeout
timed_out
시간 초과 여 부 를 알 수 있 습 니 다.기본적으로 검색 요청 은 시간 을 초과 하지 않 습 니 다. 결과 보다 낮은 응답 시간 이 더 중요 하 다 면 지정 할 수 있 습 니 다. timeout
10 또는 10ms (10 밀리초) 또는 1s (1 초):GET /_search?timeout=10ms
요청 시간 이 초과 되 기 전에 Elasticsearch 는 각 조각 에서 성공 적 으로 얻 은 결 과 를 되 돌려 줍 니 다.
2. 다 중 색인 다 중 형식
특정한 색인 이나 형식 을 제한 하지 않 으 면 클 러 스 터 의 모든 문 서 를 검색 합 니 다.Elasticsearch 는 검색 요청 을 각각 메 인 필름 이나 복사 본 으로 나 누 어 조회 한 10 개의 결 과 를 모 아 우리 에 게 되 돌려 주 었 습 니 다.
URL 에 색인 과 종 류 를 지정 할 수 있 습 니 다.
/_search
모든 색인 에서 모든 종 류 를 검색 합 니 다.
/gb/_search
... 에 있다
gb
색인 에서 모든 종 류 를 검색 합 니 다./gb,us/_search
... 에 있다
gb
화해시키다 us
색인 에서 모든 문 서 를 검색 합 니 다./g*,u*/_search
어떤
g
혹은 u
시작 색인 에서 모든 종 류 를 검색 합 니 다./gb/user/_search
... 에 있다
gb
색인 검색 user
유형/gb,us/user,tweet/_search
... 에 있다
gb
화해시키다 us
색인 검색 user
화해시키다 tweet
유형/_all/user,tweet/_search
모든 색인 에서 검색
user
화해시키다 tweet
유형tips: 하나의 색인 을 검색 하면 다섯 개의 메 인 블록 과 다섯 개의 색인 을 검색 할 때 각각 한 개의 블록 이 있 습 니 다. 정확히 말 하면 등가 입 니 다.
3. 페이지 나 누 기
이전 빈 검색 에서 클 러 스 터 에 있 음 을 설명 하 였 습 니 다. 14 개의 문서 가 (empty) query 와 일치 합 니 다.하지만
hits
배열 에는 10 개의 문서 만 있다.어떻게 해야만 다른 문 서 를 볼 수 있 습 니까?SQL 사용 LIMIT
키워드 page
결 과 는 방법 이 같 습 니 다. Elasticsearch 받 아들 이기 from
화해시키다 size
인자:size
되 돌려 야 할 결과 의 수 를 표시 합 니 다. 기본 값 은?
10
from
건 너 뛰 어야 할 초기 결과 수 를 표시 합 니 다. 기본 값 은?
0
페이지 당 5 개의 결 과 를 보 여 준다 면 1 ~ 3 페이지 의 결 과 를 아래 방식 으로 요청 할 수 있 습 니 다.
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
페이지 가 너무 깊 고 한 번 에 너무 많은 결 과 를 요청 하 는 상황 을 고려 하여 결과 집합 은 돌아 가기 전에 정렬 합 니 다.그러나 한 가지 요 구 는 항상 여러 개의 조각 을 뛰 어 넘 고 모든 조각 은 자신의 정렬 결 과 를 만들어 야 한 다 는 것 을 기억 하 세 요. 이런 결 과 는 전체 순서 가 정확 하도록 집중 적 으로 정렬 해 야 합 니 다.
tips: 분포 식 시스템 에서 결과 정렬 에 대한 원 가 는 페이지 의 깊이 에 따라 지수 가 상승 합 니 다.이것 이 바로 웹 검색엔진 이 어떤 조회 에 도 1000 개가 넘 는 결 과 를 되 돌려 주지 않 는 이유 다.
4. 경 량 검색
두 가지 형식 이 있어 요.
API: 하 나 는 '경 량' 입 니 다. 검색 문자열 버 전, 검색 문자열 에 모든 인 자 를 전달 해 야 합 니 다. 다른 하 나 는 더 완전한 것 입 니 다. 요청 체 버 전, JSON 형식 과 더 풍부 한 검색 표현 식 을 검색 언어 로 사용 해 야 합 니 다.검색 문자열 검색 은 명령 행 을 통 해 즉석 검색 에 매우 적합 합 니 다.검색
tweet
형식 중 tweet
필드 포함 elasticsearch
단어의 모든 문서:GET /_all/tweet/_search?q=tweet:elasticsearch
즉석 조회 (Ad Hoc) 는 사용자 가 자신의 수요 에 따라 유연 하 게 조회 조건 을 선택 하고 시스템 은 사용자 의 선택 에 따라 해당 하 는 통계 보고 서 를 생 성 할 수 있다. 즉석 조 회 는 일반 응용 조회 와 가장 큰 차이 점 은 일반적인 응용 조회 가 맞 춤 형 으로 개 발 된 것 이 고 즉석 조 회 는 사용자 가 조회 조건 을 사용자 정의 한 것 이다.별도의 SQL 구문 으로 실 행 된 조 회 는 즉석 조회 입 니 다. 예 를 들 어 C \ # 프로그램 에 포 함 된 SQL 구문 이나 SSMS 에 있 는 새 조회 창, 자신 이 입력 한 SQL 코드 는 즉석 조회 입 니 다.그리고 SQL 코드 를 저장 과정 에 넣 고 저장 과정 이나 함수 나 트리거 로 실행 하 는 조 회 는 즉석 조회 가 아 닙 니 다. 즉석: 즉석, 즉석에서 조회 하 는 것 입 니 다.
_모든 필드
이 간단 한 검색 은 포함 을 되 돌려 줍 니 다.
mary
모든 문서:GET /_search?q=mary
문 서 를 색인 할 때 Elasticsearch 는 모든 필드 의 값 을 꺼 내 큰 문자열 로 연결 합 니 다.
_all
필드 인덱스 진행.특정 필드 를 설정 하지 않 으 면 검색 문자열 을 사용 합 니 다. _all
필드 검색.더 복잡 한 조회
아래 의 조 회 는 트 위 터 형식 에 대해 다음 과 같은 조건 을 사용 합 니 다.
name
필드 에 포함 mary
혹은 john
date
값 이 크다 2014-09-10
_all
필드 포함 aggregations
혹은 geo
+name:(mary john) +date:>2014-09-10 +(aggregations geo)
검색 문자열 검색 은 모든 사용자 가 색인 의 임 의 필드 에서 느 리 고 중량급 의 조 회 를 실행 할 수 있 도록 합 니 다. 이 는 프라이버시 정 보 를 노출 시 키 고 클 러 스 터 를 무 너 뜨 릴 수 있 습 니 다.또한 일부 검색 문자열 의 작은 문법 오류 로 인해 검색 결 과 를 얻 을 수 없 기 때문에 사용자 에 게 검색 문자열 검색 기능 을 직접 노출 하 는 것 을 추천 하지 않 습 니 다. 클 러 스 터 와 데이터 에 있어 서 그들 을 매우 신뢰 하지 않 는 한.
반면 우 리 는 생산 환경 에서 기능 이 전면적 인 것 을 더 많이 사용한다. request body API 를 조회 하면 상기 모든 기능 을 완성 할 수 있 을 뿐만 아니 라 추가 기능 도 있다.그러나 그 단계 에 도달 하기 전에 데이터 가 Elasticsearch 에서 어떻게 색인 되 었 는 지 먼저 알 아야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
_mappings자동으로 인덱스가 생성이 된다. GET books/_mapping DELETE books PUT books/_mapping "type" : "text" text는 역인덱스를 생성하지만 keyword 는 역인덱스를 생...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.