ElasticSearch DSL 구조에 대한 설명
6249 단어 elasticsearch
공식 문서:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
기본 구조
{
QUERY_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
{
QUERY_NAME: {
FIELD_NAME: {
ARGUMENT: VALUE,
ARGUMENT: VALUE,...
}
}
}
GET /_search?pretty
{"explain":true,
"version":true,
"from":0,
"size":10,
"stored_fields":["field1","field2"],
"query":{QUERY_CLAUSE},
facets:{FACETS_CLAUSE},
"_source": {},
"script_fields":{},
"post-filter":{},
"highlight":{},
"track_scores":true,
"sort":{SORT_CLAUSE}
}
참고:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-stored-fields.html
Top Level query에서 가능한 조합입니다.
{term:{TERM_QUERY} 자세한 내용은
| terms: {TERMS_QUERY} 자세한 내용은
| terms_set: {TERMS_SET_QUERY} 자세한 내용은
| range: {RANGE_QUERY} 자세한 내용은
| prefix: {PREFIX_QUERY} 자세한 내용은
| exists:{EXISTS_QUERY} 자세한 내용은
| wildcard: {WILDCARD_QUERY} 자세한 내용은
| match_all:{MATCH_ALL_QUERY} 자세한 내용은
| match_none: {MATCH_NONE_QUERY} 자세한 내용은
| match: {MATCH_QUERY} 자세한 내용은
| match_phrase: {MATCH_PHRASE_QUERY} 자세한 내용은
| match_phrase_prefix: {MATCH_PHRASE_PREFIX_QUERY} 자세한 내용은
| multi_match: {MULTI_MATCH_QUERY} 자세한 내용은
| common: {COMMON_TERM_QUERY} 자세한 내용은
| queryString: {QUERY_STRING_QUERY} 자세한 내용은
| simple_query_string: {SIMPLE_QUERY_STRING_QUERY} 자세한 내용은
| bool: {BOOLEAN_QUERY} 자세한 내용은
| dis_max: {DISMAX_QUERY} 자세한 내용은
| constant_score:{CONSTANT_SCORE_QUERY} 자세한 내용은
| nested: {NESTED_QUERY} 자세한 내용은
returns the parent doc that have child doc matches the query
| has_child:{HAS_CHILD_QUERY} 자세한 내용은
returns the child documents which associated parents have matched
| has_parent: {HAS_PARENT_QUERY} 자세한 내용은
| parent_id: {PARENT_ID_QUERY} 자세한 내용은
| boosting: {BOOSTING_QUERY} 자세한 내용은
| function_score:{FUNCTION_SCORE_QUERY} 자세한 내용은
| fuzzy: {FUZZY_QUERY} 자세한 내용은
| regexp: {REGEXP_QUERY} 자세한 내용은
| type: {TYPE_QUERY} 자세한 내용은
| ids:{IDS_QUERY} 자세한 내용은
| more_like_this:{MORE_LIKE_THIS_QUERY} 자세한 내용은
| percolate: {PERCOLATE_QUERY} 자세한 내용은
| Span_queries 자세한 내용은
}
FILTER_ 정보CLAUSE의 조합
{ query:{QUERY_CLAUSE}
| term:{TERM_FILTER}
| range:{RANGE_FILTER}
| prefix:{PREFIX_FILTER}
| wildcard:{WILDCARD_FILTER}
| bool:{BOOLEAN_FILTER}
| constantScore:{CONSTANT_SCORE_QUERY}
}
FACETS_ 정보CLAUSE의 조합
{ $FACET_NAME_1:
{filter_clause},
$FACET_NAME_2:
{filter_clause},
...
}
BOOLEAN_ 정보FILTER 조합
{
must:
{FILTER_CLAUSE}
| [{filter_clause},...],
should:
{FILTER_CLAUSE}
| [{filter_clause},...],
mustnot:
{FILTER_CLAUSE}
| [{filter_clause},...],
minimum_should_match
}
BOOLEAN_ 정보QUERY의 조합
{
must:{QUERY_CLAUSE}| [{QUERY_CLAUSE},...],
should:{QUERY_CLAUSE}|[{QUERY_CLAUSE},...],
mustnot:{QUERY_CLAUSE}|[{QUERY_CLAUSE},...],
boost:FLOAT,
minimum_should_match
}
집합 정보
참조:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html
"aggregations[aggs]" : {
"" : {
"" : {
}
[,"meta" : { [] } ]?
[,"aggregations" : { []+ } ]?
}
[,"" : { ... } ]*
}
query와 filter 사용 장면
As a general rule, use query clauses for full-text search or for any condition that should affect the relevance score, and use filters for everything else.
통상적으로 필터는 조회할 때 점수를 매기지 않고 캐시를 첨부하기 때문에query보다 효율이 높다.
모/자 관계 예
branch가employee의 부모 문서라고 가정합니다
children을 통해 parents has_ 찾기child 조회와 필터는children의 내용에 따라parent 문서를 찾을 수 있습니다.
1980년에 태어난 직원을 포함한 모든 지부
GET /company/branch/_search
{
"query": {
"has_child": {
"type": "employee",
"score_mode": "max", --none( ) max,min,avg,sum. 。
"query": {
"match": {
"name": "Alice Smith"
}
}
}
}
}
parent를 통해 childrenhas_ 조회parent 조회는parents의 데이터를 바탕으로children을 되돌려줍니다.
GET /company/employee/_search
{
"query": {
"has_parent": {
"type": "branch",
"query": {
"match": {
"country": "UK"
}
}
}
}
}
has_parent 필터의 결과는 캐시되지 않습니다. 일반적인 캐시 메커니즘은has_parent 필터의 내부 filter에 있습니다.parent-child 지원children 집합parent 집합은 지원되지 않습니다.
국가에 따라 직원들이 가장 좋아하는 취미를 확정하다.
GET /company/branch/_search?search_type=count
{
"aggs": {
"country": {
"terms": {
"field": "country"
},
"aggs": {
"employees": {
"children": { -- children parent children employee。
"type": "employee"
},
"aggs": {
"hobby": {
"terms": {
"field": "employee.hobby" -- employee child hobby 。
}
}
}
}
}
}
}
}
es-sql의 사용법
http://localhost:9200/_sql/_explain?sql=select member_id as a from label_20180205 where mobile = '13627182930'
“`http://localhost:9200/_sql?sql=select * from indexName limit 10““
자세한 내용은 다음을 참조하십시오.https://github.com/NLPchina/elasticsearch-sql/wiki
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.