탄성 검색을 사용하여 mongoDb
컬렉션의 색인을 생성하는 매핑을 만들었습니다. 여기에 mapping
호텔입니다 : subLocality1
, subLocality2
, subLocality3
, city
:탄성 검색 - 여러 필드의 고유 한 요소
"properties" : {
"address_components" : {
"properties" : {
"_id" : {
"type" : "string"
},
"subLocality1" : {
"type" : "string",
"index" : "not_analyzed"
},
"subLocality2" : {
"type" : "string",
"index" : "not_analyzed"
},
"subLocality3" : {
"type" : "string",
"index" : "not_analyzed"
},
"city" : {
"type" : "string",
"index" : "not_analyzed"
}
}
지금, 나는이 분야의 전체 고유 항목을 검색합니다. 또한 distinct
값의 각각은 q
을 하위 문자열로 포함해야합니다. 고유 항목에는 해당하는 city
값이 포함되어야합니다.
예 : 상기 인덱스
"address_components" : {
"subLocality1" : "s1"
"subLocality2" : "s1",
"subLocality3" : "s2",
"city":"a"
}
"address_components" : {
"subLocality1" : "s3"
"subLocality2" : "s1",
"subLocality3" : "s2",
"city":"a"
}
"address_components" : {
"subLocality1" : "s2"
"subLocality2" : "s1",
"subLocality3" : "s4",
"city":"a"
}
는 예상 결과는 다음
"address_components" : {
"subLocality1" : "s1"
"subLocality2" : "s1",
"subLocality3" : "s2",
"city":"ct1"
}
"address_components" : {
"subLocality1" : "s3"
"subLocality2" : "s1",
"subLocality3" : "s2",
"city":"ct1"
}
"address_components" : {
"subLocality1" : "s2"
"subLocality2" : "s1",
"subLocality3" : "s4",
"city":"ct1"
}
{s1, a}, {s2,a}, {s3,a}, {s4,a},{a,a}
I 탄성 검색을 terms
응집을 사용하여 고 시도했다.
GET /rescu/rescu/_search?pretty=true&search_type=count
{
"aggs" : {
"distinct_locations" : {
"terms" : {
"script" : "doc['address_components.subLocality1'].value"
}
}
}
}
그러나 terms
집계는 link을 다음에 따라 하나의 필드에 적용됩니다.