elasticsearch - DSL 고급 조회 문법 정리
검색 문자열 검색 은 명령 행 을 통 해 특정 (ad hoc) 검색 을 수행 하 는 데 편리 하지만 한계 가 있 습 니 다 (간단 한 검색 장 참조).Elasticsearch 는 DSL 조회 (Query DSL) 라 는 풍부 하고 유연 한 조회 언어 를 제공 합 니 다. 더욱 복잡 하고 강력 한 조 회 를 구축 할 수 있 습 니 다.DSL (Domain Specific Language 특정 영역 언어) 이 JSON 요청 체 로 나 타 났 습 니 다.
쿼 리 컨 텍스트
주요 특징:
응용 필드:
match - 모호 일치: '4 대 명작' 을 검색 하면 '4 대' OR '명작' OR '4 대 명작' 이 포 함 된 기록 을 찾 을 수 있 습 니 다.
GET /megacorp/employee/_search
{
"query" : {
"match" : {
"last_name" : " "
}
}
}
match_"4 대 명작" 을 검색 하면 "4 대" OR "명작" 이 포 함 된 기록 만 찾 을 수 있 습 니 다.
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"last_name" : " "
}
}
}
multi_match - 다 중 필드 일치: "손오공" 을 검색 하면 firstname 또는 about 필드 에 '손오공' 또는 '손' 등 단어 가 포함 되 어 있 으 면 찾 을 수 있 습 니 다.
GET /megacorp/employee/_search
{
"query": {
"multi_match": {
"query": " ",
"fields":["first_name","about"]
}
}
}
query_string - lucene 조회 문법 조회 (kibana 조회 문법)
GET /megacorp/employee/_search
{
"query": {
"query_string": {
"query": " OR "
}
}
}
query_string - 다 중 필드
GET /megacorp/employee/_search
{
"query": {
"query_string": {
"fields":["about","last_name"],
"query": " OR "
}
}
}
하 이 라이트 검색
GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : " "
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}
구조 조회 문법:
term - 후진 색인 에 저 장 된 정확 한 단어 에 따라 작 동 합 니 다. 이 조 회 는 보통 전체 텍스트 필드 가 아 닌 숫자, 날짜, 매 거 진 등 구조 화 된 데이터 에 사 용 됩 니 다.또는 저급한 조 회 를 만 들 고 분석 과정 전에 진행 할 수 있 습 니 다.
GET /megacorp/employee/_search
{
"query": {
"term": {
"age":"33"
}
}
}
range 범위 조회 - 조회 age 가 20 보다 크 면 30 보다 작은 기록
GET /megacorp/employee/_search
{
"query": {
"range": {
"age":{
"gte":20,
"lte":30
}
}
}
}
2. fiter context
주요 특징:
검색 문법:
bool 키워드
GET /megacorp/employee/_search
{
"query": {
"bool": {
"filter":{
"term":{
"age":33
}
}
}
}
}
복합 조회
constant_score - 내부 결 과 를 조회 하 는 문서 의 점 수 를 모두 1 또는 boost 의 값 으로 설정 하고 bool 조회 와 결합 하여 사용자 정의 점 수 를 실현 하 는 데 사용 합 니 다.
GET /megacorp/employee/_search
{
"query": {
"constant_score": {
"filter":{
"match":{
"about":" "
}
}
}
}
}
사용자 정의 점수
GET /megacorp/employee/_search
{
"query": {
"constant_score": {
"filter":{
"match":{
"about":" "
}
}
},
"boots":2
}
}
should - 적어도 한 가지 조건 을 만족 시 켜 야 한다.
GET /megacorp/employee/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"first_name": " "
}
},
{
"match": {
"last_name": " "
}
}
]
}
}
}
must - 모든 조건 을 동시에 만족 시 켜 야 합 니 다.
GET /megacorp/employee/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"first_name": " "
}
},
{
"match": {
"about": " "
}
}
]
}
}
}
must_no - 조건 을 만족 시 키 지 않 아야 합 니 다. 예 를 들 어 33 세의 기록 을 찾 는 것 과 같 지 않 습 니 다.
GET /megacorp/employee/_search
{
"query": {
"bool": {
"must_not":
{
"term": {
"age": "33"
}
}
}
}
}
조합 조회
GET /megacorp/employee/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"first_name": " "
}
},
{
"match": {
"about": " "
}
}
],
"filter":{
"term":{
"age":35
}
}
}
}
}
취 합 조회 GROUP BY
//
GET /megacorp/employee/_search
{
"aggs": {
"group_by_age": {
"terms": { "field": "age" }
}
}
}
//
GET /megacorp/employee/_search
{
"query": {
"match": {
"last_name": " "
}
},
"aggs": {
"group_by_age": {
"terms": { "field": "age" }
}
}
}
//
GET /megacorp/employee/_search
{
"aggs": {
"group_by_age": {
"terms": { "field": "age" },
"aggs" : {
"avg_age" : {
"avg" : { "field" : "age" }
}
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.