2017-01-31 126 views
0

我正在使用Elasticsearch 2.4.3並希望提升查詢中的特定字段。這可能嗎?我只看到我能如何提高指數。Elasticsearch查詢:提升特定字段

問候!

UPDATE

映射:

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

查詢(Java 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

太棒了!謝謝! –