ES 스크립트 쿼리 빈 문자열
질의 필드가 비어 있는 문서
curl localhost:9200/customer/_search?pretty -d'{
"size": 5,
"query": {
"bool": {
"must": {
"script": {
"script": {
"inline": "params._source.strnickname.length()<1",
"lang": "painless"
}
}
}
}
}
}'
doc,fields 및_소스 사용법
doc: analyzed text 형식의 필드를 제외하고 나머지 필드는 기본적으로 doc_가 열려 있습니다values의doc는text 필드를 조회할 수 있습니다. 전제는fielddata가 열려 있어야 합니다.그러나 fielddata를 열면 조회할 때 모든 term을 불러와서 JVM heap에 들어갑니다.메모리 소모가 너무 많으니 조심해라.홈페이지에서 doc['field_name']로 조회할 수 있다고 했지만 테스트 결과 안 되지만 doc를 통해 조회할 수 있습니다.field_name 쿼리.이후 몇 차례의 테스트를 통해 단인용 부호의 문제가 발견되었다.doc['field_name']에서 조회할 수 없습니다.항상 오류를 보고합니다.
"caused_by" : {
"type" : "script_exception",
"reason" : "compile error",
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "Variable [field_name] is not defined."
},
"script_stack" : [
"doc[field_name].length() < ...",
" ^---- HERE"
],
"script" : "doc[field_name].length() < 1",
"lang" : "painless"
}
그러나doc[\u0027field_name\u0027]는 조회할 수 있고,doc['field_name']도 조회할 수 있습니다.상술한 예에 대해 아래의 조회 방식을 통해 조회할 수 있다
curl localhost:9200/customer/_search?pretty -d'{
"size": 5,
"query": {
"bool": {
"must": {
"script": {
"script": {
"inline": "doc['\''strnickname'\''].length()<1",
"lang": "painless"
}
}
}
}
}
}'
fields: "store"로만 표시:true 필드를 사용할 수 있습니다._fields['field_name'].value or _fields['field_name'].values 조회.
_소스: 특수한storefields입니다.모든 필드를 사용할 수 있습니다.통과 가능_source.field_name 액세스.
curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d'
{
"mappings": {
"my_type": {
"properties": {
"title": {
"type": "text"
},
"first_name": {
"type": "text",
"store": true
},
"last_name": {
"type": "text",
"store": true
}
}
}
}
}
'
curl -XPUT 'localhost:9200/my_index/my_type/1?pretty' -H 'Content-Type: application/json' -d'
{
"title": "Mr",
"first_name": "Barry",
"last_name": "White"
}
'
curl -XGET 'localhost:9200/my_index/_search?pretty' -H 'Content-Type: application/json' -d'
{
"script_fields": {
"source": {
"script": {
"inline": "params._source.title + ' '+ params._source.first_name + ' ' + params._source.last_name"
}
},
"stored_fields": {
"script": {
"inline": "params._fields['first_name'].value + ' ' + params._fields['last_name'].value"
}
}
}
}
'
doc는storefields보다 성능이 훨씬 좋아요.
Stored fields (which includes the stored _source field) are much slower than doc-values. They are optimised for returning several fields per result, while doc values are optimised for accessing the value of a specific field in many documents. It makes sense to use _source or stored fields when generating a script field for the top ten hits from a search result but, for other search and aggregation use cases, always prefer using doc values.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.