0
와일드 카드 문자로 결과를 필터링하려고합니다. 내 기록의와일드 카드로 ElasticSearch 필터
예 : 각 개정 다른 순서와 다른 컨텍스트를 가질 수
....
"_source" : {
"urlSlug" : "entry-title",
"revisions" : [
{
"title" : "Entry title",
"context" : "NKD"
}
]
}
.
레코드를 검색 할 때 "N"과 같은 컨텍스트가있는 엔티티 만 검색하려고합니다. 그래서 match_all과 와일드 카드로 중첩 된 쿼리를 수행합니다.
쿼리를 실행할 때 결과가 0입니다. 결과를 제한하는 방법을 알 수 없습니다.
indexes:
app:
types:
entity:
properties:
urlSlug: ~
revisions:
type: "nested"
properties:
title: { type: text,boost: 10 }
context: { type: text }
을 내 쿼리 빌더는 다음과 같습니다 :
나는 다음과 같은 설정으로이 FosElastica을 위해 사용하고
$boolQuery = new ESQuery\BoolQuery();
$fieldQuery = new ESQuery\QueryString();
$fieldQuery->setQuery('*' . $query . '*');
$boolQuery->addMust($fieldQuery);
$nestedQuery = new ESQuery\Nested();
$nestedQuery->setPath('revisions');
$nestedBoolQuery = new ESQuery\BoolQuery();
$matchAllQuery = new ESQuery\MatchAll();
$nestedBoolQuery->addShould($matchAllQuery);
$filterQuery = new ESQuery\Wildcard();
$filterQuery->setValue('revisions.context','*N*');
$nestedBoolQuery->addFilter($filterQuery);
$nestedQuery->setQuery($nestedBoolQuery);
$boolQuery->addMust($nestedQuery);
$result = $finder->findHybrid($boolQuery,self::AUTOCOMPLETE_MAX_RESULTS);
ElasticSearch 버전 5.2.2