elasticsearch - Elasticsearch查询:提升特定字段

标签 elasticsearch field boosting

我正在使用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倍。

关于elasticsearch - Elasticsearch查询:提升特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958087/

相关文章:

mongodb - Azure cosmos DB 3.6 Mongo 不支持具有嵌入字段的复合索引

python - 优化后如何将多个超参数传给LightGBM?

R:实现我自己的梯度提升算法

python - 哪种 (ML/DL) 模型最适合较小数据集的多类分类?

python - 更新 Elasticsearch 字段时出现问题

php - 为空白的调用数据库字段分配默认值

elasticsearch - Kibana无法启动通过HTTP配置的Shield

android - 使用可选字段解析 JSON

elasticsearch - Grafana 过滤未索引的 ElasticSearch 字段(零),因此它们不会显示在表格面板中

php - 异常的PHP字符串长度以及使用PHP搜索Elasticsearch时