2017-01-31 67 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

太棒了!谢谢! –