![](/img/trans.png)
[英]Boosting on an elasticsearch field and words in the field within the query
[英]Elasticsearch Query: Boosting specific field
我正在使用Elasticsearch 2.4.3,並希望在查詢中增強特定字段。 這可能嗎? 我只看到如何提高索引。
問候!
更新
對應:
"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();
如果您將匹配查詢拆分為單個字段,例如使用多重匹配查詢( 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倍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.