首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch查询:增强特定字段

问Elasticsearch查询:增强特定字段
EN

Stack Overflow用户
提问于 2017-01-31 12:50:44
回答 1查看 1.6K关注 0票数 0

我正在使用Elasticsearch 2.4.3,并希望在我的查询中增加特定的字段。这个是可能的吗?我只知道如何提指数。

欢迎光临!

更新

制图:

代码语言:javascript
复制
"firstName":{"type":"string",
     "analyzer":"customNGram"
},
"lastName":{
     "type":"string",
     "analyzer":"customNGram"
},
"note":{
     "type":"string",
     "analyzer":"customNGram"
}

查询(Java ):

代码语言:javascript
复制
    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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 15:13:55

如果将匹配查询拆分为匹配单个字段(如使用多匹配查询(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html) ),则可以增加您喜欢的字段。所以,就像:

代码语言:javascript
复制
QueryBuilder qb = new BoolQueryBuilder()
    .must(QueryBuilders.multiMatchQuery(term, "firstName^3",
    "lastName^3", "note")
            .analyzer("atsCustomSearchAnalyzer")
            .operator(Operator.AND));

相对于备注字段,应该将firstName和lastName提高3倍。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41958087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档