ElasticSearch - Query 조회 방식
5171 단어 ElasticSearch검색 최적화
본고는 블로그 에서 만든 색인 문서를 바탕으로 한 것입니다. 먼저 블로그 를 읽으십시오.
1、query string search
모든 상품 검색:
GET /ecommerce/product/_search
반환된 결과는 다음과 같습니다.
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "ecommerce",
"_type": "product",
"_id": "2",
"_score": 1,
"_source": {
"name": "jiajieshi yagao",
"desc": "youxiao fangzhu",
"price": 25,
"producer": "jiajieshi producer",
"tags": [
"fangzhu"
]
}
},
{
"_index": "ecommerce",
"_type": "product",
"_id": "1",
"_score": 1,
"_source": {
"name": "gaolujie yagao",
"desc": "gaoxiao meibai",
"price": 30,
"producer": "gaolujie producer",
"tags": [
"meibai",
"fangzhu"
]
}
},
{
"_index": "ecommerce",
"_type": "product",
"_id": "3",
"_score": 1,
"_source": {
"name": "zhonghua yagao",
"desc": "caoben zhiwu",
"price": 40,
"producer": "zhonghua producer",
"tags": [
"qingxin"
]
}
}
]
}
}
다음을 수행합니다.
took: 몇 밀리초 걸렸어요 timed_out: 시간 초과 여부, 여기는 없습니다_shards: 데이터가 5개의 섹션으로 분해되어 검색 요청에 대해primaryshard(또는 그 어떤replicashard도 가능)hits를 모두 칠 수 있습니다.total: 검색 결과의 수량, 3개의documenthits.max_score:score의 의미는 바로document가 하나의 검색 관련도에 대한 일치 점수입니다. 관련될수록 일치합니다. 점수도 높습니다hits.hits: 검색에 일치하는 문서의 상세한 데이터를 포함합니다
상품 이름에 yagao가 포함된 상품을 검색하고 판매 가격의 하락 순서에 따라 정렬합니다.
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
주의: 임시로 명령줄에서 도구를 사용하는데 예를 들어curl, 신속하게 요청을 보내서 원하는 정보를 검색하는 데 적용된다.그러나 검색 요청이 복잡하면 구축하기 어려워요. 생산 환경에서querystringsearch를 거의 사용하지 않아요.2、query DSL
DSL: Domain Specified Language, 특정 영역의 언어 http request body: 요청체, json 형식으로 조회 문법을 구축할 수 있습니다. 비교적 편리하고 각종 복잡한 문법을 구축할 수 있습니다.querystring search보다 훨씬 강할 것입니다
모든 상품을 조회하다
GET /ecommerce/product/_search
{
"query": { "match_all": {} }
}
검색 명칭은 yagao를 포함하는 상품을 포함하고 가격 하락 순서에 따라 정렬한다GET /ecommerce/product/_search
{
"query" : {
"match" : {
"name" : "yagao"
}
},
"sort": [
{ "price": "desc" }
]
}
페이지별로 상품을 조회하다.
총 3개의 상품이 페이지당 1개의 상품이 표시된다고 가정하면 현재 2페이지가 표시되기 때문에 두 번째 상품을 찾아낸다
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
조회할 상품의 명칭과 가격을 지정합니다.GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
생산 환경의 사용에 더욱 적합하고 복잡한 조회를 구축할 수 있다3、query filter
검색 상품 명칭은 야가오를 포함하고 판매 가격이 25위안 이상인 상품을 포함한다
GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 25 }
}
}
}
}
}
4, full-text search(전문 검색)
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao producer"
}
}
}
producer 이 필드는 먼저 분해되어 역렬 인덱스를 만듭니다.5. phrase search(구문 검색)
전체 텍스트 검색과 대응하는 반면, 전체 텍스트 검색은 입력한 검색을 분리하여 색인을 거꾸로 배열하여 일일이 일치하게 하고, 임의의 해체된 단어만 일치하면 결과로 되돌아갈 수 있다.
phrase search, 입력을 요구하는 검색 문자열은 지정한 필드 텍스트에 똑같은 것을 완전히 포함해야 일치하는 것으로 계산할 수 있고 결과로 되돌아올 수 있습니다.
GET /ecommerce/product/_search
{
"query" : {
"match_phrase" : {
"producer" : "yagao producer"
}
}
}
6. 하이라이트 검색
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "producer"
}
},
"highlight": {
"fields" : {
"producer" : {}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spring-data-elasticsearch 페이지 조회부록: 1. 이름에서 알 수 있듯이QueryBuilder는 검색 조건, 필터 조건을 구축하는 데 사용되고 SortBuilder는 정렬을 구축하는 데 사용된다. 예를 들어 우리는 어느 위치에서 100미터 범위 내의 모...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.