2017-01-31 13 views
0

Elasticsearch 2.4.3을 사용하고 있으며 내 쿼리의 특정 필드를 강화하고 싶습니다. 이것이 가능한가? 인덱스 만 부각시킬 수있는 방법을 알 수 있습니다.Elasticsearch Query : 특정 필드 확대하기

인사말!

UPDATE

매핑 :

"firstName":{"type":"string", 
    "analyzer":"customNGram" 
}, 
"lastName":{ 
    "type":"string", 
    "analyzer":"customNGram" 
}, 
"note":{ 
    "type":"string", 
    "analyzer":"customNGram" 
} 

쿼리 (자바 API)를 사용하여 멀티를 사용하여 예를 들어 개별 필드를 일치하도록 검색 쿼리를 분할하는 경우

QueryBuilder qb = new BoolQueryBuilder() 
     .must(QueryBuilders.matchQuery("_all", term) 
       .analyzer("atsCustomSearchAnalyzer") 
       .operator(Operator.AND)); 

    SearchRequestBuilder searchRequestBuilder = elasticsearchClient.prepareSearch("persons", "activities").setTypes("person", "activity") 
      .setQuery(qb) 
      .addHighlightedField("*").setHighlighterRequireFieldMatch(false) 
      .setHighlighterOrder("score") 
      .setHighlighterFragmentSize(150) 
      .setHighlighterForceSource(true) 
      .setSize(100) 
      .addIndexBoost("persons", 200) 
      .setFrom(offset); 

    return searchRequestBuilder.execute().get(); 
+0

지금까지 시도한 매핑 및 검색어를 표시 할 수 있습니까? – user3775217

+0

귀하의 요청에 대한 제 질문이 업데이트되었습니다 –

답변

1

일치 검색어 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html)를 사용하면 좋아하는 입력란을 강조 표시 할 수 있습니다. 따라서 다음과 같이하십시오 :

QueryBuilder qb = new BoolQueryBuilder() 
    .must(QueryBuilders.multiMatchQuery(term, "firstName^3", 
    "lastName^3", "note") 
      .analyzer("atsCustomSearchAnalyzer") 
      .operator(Operator.AND)); 

메모 필드와 비교하여 firstName과 lastName을 3 배로 올려야합니다.

+0

좋아요! 고맙습니다! –