elasticsearch 학습 노트
20169 단어 elasticsearch백 엔 드
1.설치 초기 화 환경
a.단기 개발 판 사용
#
docker run -d --name es --restart=always \
--net mybridge --ip=172.1.111.12 \
-v /home/tools/elasticsearch/single/data/:/usr/share/elasticsearch/data/ \
-e "discovery.type=single-node" \
elasticsearch:7.7.0
b.데이터베이스 요청
시작 검사
### info
curl -X GET http://172.1.111.12:9200
###
curl -X GET 'http://172.1.111.12:9200/_cat/indices?v'
### info
curl -X GET 'http://172.1.111.12:9200/_mapping?pretty=true'
중국어 단어 플러그 인 설치,데이터베이스 초기 화
docker exec -it es bash
./bin/elasticsearch-plugin install 'https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip'
exit
docker restart es
### accounts
curl -X GET 'http://172.1.111.12:9200/accounts'
###
curl -X DELETE 'http://172.1.111.12:9200/accounts'
c.색인 형식 수정
# , 、
# https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html
# https://github.com/medcl/elasticsearch-analysis-ik
curl -X PUT 'http://172.1.111.12:9200/accounts' -d '
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}'
# :analyzer ,[ik_max_word|standard]
curl -X PUT 'http://172.1.111.12:9200/accounts/_analyze' -d '
{
"analyzer": "standard",
"text": " ES standard, , "
}' -H 'Content-Type:application/json'
2.첨삭 검사 조작
라 이브 러 리 작성 표:색인 아래 대상 만 들 기
POST,PUT 매개 변수
-H 'Content-Type:application/json'
매개 변 수 를 주의 하 십시오.Content-Type header [application/x-www-form-urlencoded] is not supported
# accounts Index, person Type。person
curl -X PUT 'http://172.1.111.12:9200/accounts' -d '
{
"mappings": {
"person": {
"properties": {
"user": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"desc": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}
}' -H 'Content-Type:application/json'
데이터 추가
curl -X PUT 'http://172.1.111.12:9200/accounts/person/2' -d '
{
"user": " ",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
#
{
"_index": "accounts",
"_type": "person",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 2
}
#
curl -X PUT 'http://172.1.111.12:9200/accounts/person/2' -d '
{
"user": " 2",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
b.데이터 보기
# , -d
curl -X POST 'http://172.1.111.12:9200/accounts/person' -d '{}' -H 'Content-Type:application/json'
#
{
"_index": "accounts",
"_type": "person",
"_id": "5oypSXIBsIkVNyXrn1o5",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 3
}
#
curl -X GET 'http://172.1.111.12:9200/accounts/person/1'
#
{"_index":"accounts","_type":"person","_id":"1","_version":1,"_seq_no":0,"_primary_term":2,"found":true,"_source":
{
"user": " ",
"title": " ",
"desc": " "
}}
c.데이터 삭제
curl -X DELETE 'http://172.1.111.12:9200/accounts/person/2'
#
{
"_index": "accounts",
"_type": "person",
"_id": "2",
"_version": 2,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}
d.데이터 업데이트
curl -X PUT 'http://172.1.111.12:9200/accounts/person/2' -d '
{
"user": " 2",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
#
{"_index":"accounts","_type":"person","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":6,"_primary_term":3}
curl -X PUT 'http://172.1.111.12:9200/accounts/person/2' -d '
{
"user": " 233",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
#
{"_index":"accounts","_type":"person","_id":"2","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":7,"_primary_term":3}
두 번 의 반환 상황:
_버 전:증가
_seq_증가
created -> updated
3.복잡 한 조회
a.검색 목록 페이지
curl -X PUT http://172.1.111.12:9200/accounts/person/_search
#
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 5,
"relation": "eq"
},
"max_score": 1.0,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "1",
"_score": 1.0,
"_source": {
"user": " ",
"title": " ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "sYynSXIBsIkVNyXrfVpX",
"_score": 1.0,
"_source": {
"analyzer": "ik_max_word",
"text": " ES standard, , "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "5oypSXIBsIkVNyXrn1o5",
"_score": 1.0,
"_source": {}
}, {
"_index": "accounts",
"_type": "person",
"_id": "9IyqSXIBsIkVNyXrLVrA",
"_score": 1.0,
"_source": {}
}, {
"_index": "accounts",
"_type": "person",
"_id": "2",
"_score": 1.0,
"_source": {
"user": " 233",
"title": " ",
"desc": " "
}
}]
}
}
앞에서 Apipost 에서 의 오 작 동 으로 일부 스 팸 데이터 가 생 겼 습 니 다.
total: , 2 。
max_score: , 1.0。
hits: 。
b.일치 하 는 검색
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-query.html
제목 검색 지정[=]
curl -X GET 'http://172.1.111.12:9200/accounts/person/_search' -d '
{
"query": {
"bool": {
"must": [{
"match": {
"title": " "
}
}],
"filter": []
}
}
}' -H 'Content-Type:application/json'
#
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 0.10536051,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "1",
"_score": 0.10536051,
"_source": {
"user": " ",
"title": " ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "2",
"_score": 0.10536051,
"_source": {
"user": " 233",
"title": " ",
"desc": " "
}
}]
}
}
어량 을 늘리다
curl -X GET 'http://172.1.111.12:9200/accounts/person/_search' -d '
{
"query": {
"bool": {
"must": [{
"match": {
"title": " "
}
}],
"filter": []
}
}
}' -H 'Content-Type:application/json'
#
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 0.31608152,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "1",
"_score": 0.31608152,
"_source": {
"user": " ",
"title": " ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "2",
"_score": 0.31608152,
"_source": {
"user": " 233",
"title": " ",
"desc": " "
}
}]
}
}
hits.hits.score。
# size,
{
"query": {"bool":{"must":[{"match":{"title":" "}}],"filter":[]}},
"size": 1
}
c.다 중 조건 조회
테스트 데이터
curl -X PUT 'http://172.1.111.12:9200/accounts/person/3' -d '
{
"user": " ",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
curl -X PUT 'http://172.1.111.12:9200/accounts/person/4' -d '
{
"user": " ",
"title": " ",
"desc": " "
}' -H 'Content-Type:application/json'
curl -X PUT 'http://172.1.111.12:9200/accounts/person/5' -d '
{
"user": " ",
"title": " 123 ",
"desc": " "
}' -H 'Content-Type:application/json'
curl -X PUT 'http://172.1.111.12:9200/accounts/person/6' -d '
{
"user": " ",
"title": " 123 ",
"desc": " "
}' -H 'Content-Type:application/json'
and
검색 시 사용 해 야 합 니 다불 조회### or
curl 'http://172.1.111.12:9200/accounts/person/_search' -d '
{
"query" : { "match" : { "desc" : " " }}
}' -H 'Content-Type: application/json'
#
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": 5.4819746,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "4",
"_score": 5.4819746,
"_source": {
"user": " ",
"title": " ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "6",
"_score": 4.7037764,
"_source": {
"user": " ",
"title": " 123 ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "5",
"_score": 1.7504241,
"_source": {
"user": " ",
"title": " 123 ",
"desc": " "
}
}]
}
}
###
curl 'http://172.1.111.12:9200/accounts/person/_search' -d '
{
"query": {
"bool": {
"must": [
{ "match": { "desc": " " } },
{ "match": { "desc": " " } }
]
}
}
}' -H 'Content-Type: application/json'
#
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": 5.4819746,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "4",
"_score": 5.4819746,
"_source": {
"user": " ",
"title": " ",
"desc": " "
}
}, {
"_index": "accounts",
"_type": "person",
"_id": "6",
"_score": 4.7037764,
"_source": {
"user": " ",
"title": " 123 ",
"desc": " "
}
}]
}
}
불 조회 배제
query.bool: {must: [],must_not: []}
페이지 정렬
정렬 출력 sort
# sort by asc/desc
{
"query": { "match_all": {"desc": " "} },
"sort": [
{ "_id": "asc" }
]
}
되돌아오다
{
"took": 22,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": null,
"hits": [{
"_index": "accounts",
"_type": "person",
"_id": "4",
"_score": null,
"_source": {
"user": " ",
"title": " ",
"desc": " "
},
"sort": ["4"]
}, {
"_index": "accounts",
"_type": "person",
"_id": "5",
"_score": null,
"_source": {
"user": " ",
"title": " 123 ",
"desc": " "
},
"sort": ["5"]
}, {
"_index": "accounts",
"_type": "person",
"_id": "6",
"_score": null,
"_source": {
"user": " ",
"title": " 123 ",
"desc": " "
},
"sort": ["6"]
}]
}
}
페이지 별 출력 from-size
{
"query": {
"match_all": {"desc": " "}
},
"sort": [{
"account_number": "asc"
}],
"from": 10,
"size": 10
}
f.유한 범위 조회
# filter.range.[ balance]: {"gte": 2000,"lte": 30000}
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
총결산
조회
query.match_all
단순 조회
query.match:{필드 1:값 1,필드 2:값 2}
교차 조회
query.bool: {must: [match{}],must_not: []}
정렬 페이지
sort: [{ "_id": "asc" }]from: 10,size: 10
범 위 를 한정 하 다
filter.range.[범위 필드 balance]:{"gte":2000,"lt":30000}
공식 문서
문서 조회https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
c.소결
약 정 된 JSON 배열 조 회 를 사용 하여 DDL 문 구 를 분석 하 는 시간 을 절약 합 니 다.전형 적 인 RESTFUL-API 스타일 을 사용 하여 응답 을 요청 하면 백 엔 드 작업 을 간소화 할 수 있 고 기본 기능 은 백 엔 드 개발 의 참여 가 필요 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.