elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬
4825 단어 검색 엔진
ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다.
nested 형식은 특수한 [object,object] 형식입니다.이 유형은 object 그룹 내의 요소에 대한 단독 조회를 허용합니다. 차이점은 다음과 같습니다.
네스트된 모델의 장단점은 다음과 같습니다.
동적 매핑 필드 데이터 유형은 미리 정의할 필요가 없으며 ES 내부에 기본 필드 유형이 자동으로 매핑됩니다.object 형식이라면 데이터가 동기화될 때 내부의text를text로 비추고 키owd의 하위 형식을 가져옵니다.참고
네스트 유형 검색
object 형식의 filed는 텍스트 형식 필드에 키워드를 추가하지 않고 단어를 구분하지 않습니다.그래서 네트 스타일로 바꿨어요.삽입 대상 (nestedobjects) 은 분리된 숨겨진 문서로 인덱스되기 때문에, 직접 조회할 수 없습니다.nested 쿼리나 nested 필터를 사용하여 접근합니다.
GET /my_index/blogpost/_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "eggs" }}, <1>
{
"nested": {
"path": "comments", <2>
"query": {
"bool": {
"must": [ <3>
{ "match": { "comments.name": "john" }},
{ "match": { "comments.age": 28 }}
]
}}}}
]
}}}
중첩 필드 정렬 문제
PUT /my_index/blogpost/2
{
"title": "Investment secrets",
"body": "What they don't tell you ...",
"tags": [ "shares", "equities" ],
"comments": [
{
"name": "Mary Brown",
"comment": "Lies, lies, lies",
"age": 42,
"stars": 1,
"date": "2014-10-18"
},
{
"name": "John Smith",
"comment": "You're making it up!",
"age": 28,
"stars": 2,
"date": "2014-10-16"
}
]
}
중첩된 질의
GET /_search
{
"query": {
"nested": {
"path": "comments",
"filter": {
"range": {
"comments.date": {
"gte": "2014-10-01",
"lt": "2014-11-01"
}
}
}
}
},
"sort": {
"comments.stars": {
"order": "asc",
"mode": "min",
"nested_filter": {
"range": {
"comments.date": {
"gte": "2014-10-01",
"lt": "2014-11-01"
}
}
}
}
}
}
위의 방안은 ES6.1 이후에는 안 됩니다. 플러그인 형식의 정렬은 특수한 정렬nestedsort 옵션이 있기 때문에 시작하는 방식은netsed 조회와 비슷합니다.그래서 저희가 업그레이드를 해봤어요.
POST /_search
{
"query" : {
"term" : { "product" : "chocolate" }
},
"sort" : [
{
"offer.price" : {
"mode" : "avg",
"order" : "asc",
"nested": {
"path": "offer",
"filter": {
"term" : { "offer.color" : "blue" }
}
}
}
}
]
}
java 코드 작성
BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("custom_info.deptUpdateTime");
rangeQueryBuilder.gte(condition.getDeptUpdateTime().getStartTime() + "T00:00:00");
rangeQueryBuilder.lte(condition.getDeptUpdateTime().getEndTime() + "T23:59:59");
boolBuilder.must(rangeQueryBuilder);
QueryBuilder nestedQueryBuilder = new NestedQueryBuilder(
"custom_info",
boolBuilder,
ScoreMode.None
);
참조 문서
netst——path
ElasticSearch의 Nested 데이터 유형
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다. 기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.