1 Star 1 Fork 0

宇宙蒙面侠X/github.com-olivere-elastic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
cluster-test
uritemplates
.gitignore
.travis.yml
CONTRIBUTING.md
CONTRIBUTORS
LICENSE
README.md
alias.go
alias_test.go
aliases.go
aliases_test.go
bulk.go
bulk_delete_request.go
bulk_delete_request_test.go
bulk_index_request.go
bulk_index_request_test.go
bulk_request.go
bulk_test.go
bulk_update_request.go
bulk_update_request_test.go
canonicalize.go
canonicalize_test.go
clear_scroll.go
clear_scroll_test.go
client.go
client_test.go
cluster_health.go
cluster_health_test.go
cluster_state.go
cluster_state_test.go
cluster_stats.go
cluster_stats_test.go
connection.go
count.go
count_test.go
create_index.go
decoder.go
decoder_test.go
delete.go
delete_by_query.go
delete_by_query_test.go
delete_index.go
delete_mapping.go
delete_mapping_test.go
delete_template.go
delete_test.go
doc.go
errors.go
errors_test.go
example_test.go
exists.go
exists_test.go
explain.go
explain_test.go
fetch_source_context.go
fetch_source_context_test.go
filter.go
flush.go
flush_test.go
geo_point.go
geo_point_test.go
get.go
get_mapping.go
get_mapping_test.go
get_template.go
get_template_test.go
get_test.go
highlight.go
highlight_test.go
index.go
index_close.go
index_exists.go
index_get.go
index_get_settings.go
index_get_settings_test.go
index_get_test.go
index_open.go
index_test.go
indices_delete_template.go
indices_exists_template.go
indices_exists_template_test.go
indices_exists_type.go
indices_exists_type_test.go
indices_get_template.go
indices_get_template_test.go
indices_put_template.go
indices_stats.go
indices_stats_test.go
inner_hit.go
inner_hit_test.go
multi_get.go
multi_get_test.go
multi_search.go
multi_search_test.go
nodes_info.go
nodes_info_test.go
optimize.go
optimize_test.go
percolate.go
percolate_test.go
ping.go
ping_test.go
put_mapping.go
put_mapping_test.go
put_template.go
query.go
refresh.go
refresh_test.go
reindexer.go
reindexer_test.go
request.go
rescore.go
rescorer.go
response.go
scan.go
scan_test.go
scroll.go
scroll_test.go
search.go
search_aggs.go
search_aggs_avg.go
search_aggs_avg_test.go
search_aggs_cardinality.go
search_aggs_cardinality_test.go
search_aggs_children.go
search_aggs_children_test.go
search_aggs_date_histogram.go
search_aggs_date_histogram_test.go
search_aggs_date_range.go
search_aggs_date_range_test.go
search_aggs_extended_stats.go
search_aggs_extended_stats_test.go
search_aggs_filter.go
search_aggs_filter_test.go
search_aggs_filters.go
search_aggs_filters_test.go
search_aggs_geo_bounds.go
search_aggs_geo_bounds_test.go
search_aggs_geo_distance.go
search_aggs_geo_distance_test.go
search_aggs_global.go
search_aggs_global_test.go
search_aggs_histogram.go
search_aggs_histogram_test.go
search_aggs_max.go
search_aggs_max_test.go
search_aggs_min.go
search_aggs_min_test.go
search_aggs_missing.go
search_aggs_missing_test.go
search_aggs_nested.go
search_aggs_nested_test.go
search_aggs_percentile_ranks.go
search_aggs_percentile_ranks_test.go
search_aggs_percentiles.go
search_aggs_percentiles_test.go
search_aggs_range.go
search_aggs_range_test.go
search_aggs_significant_terms.go
search_aggs_significant_terms_test.go
search_aggs_stats.go
search_aggs_stats_test.go
search_aggs_sum.go
search_aggs_sum_test.go
search_aggs_terms.go
search_aggs_terms_test.go
search_aggs_test.go
search_aggs_tophits.go
search_aggs_tophits_test.go
search_aggs_value_count.go
search_aggs_value_count_test.go
search_facets.go
search_facets_date_histogram.go
search_facets_date_histogram_test.go
search_facets_filter.go
search_facets_filter_test.go
search_facets_geo_distance.go
search_facets_geo_distance_test.go
search_facets_histogram.go
search_facets_histogram_script.go
search_facets_histogram_script_test.go
search_facets_histogram_test.go
search_facets_query.go
search_facets_query_test.go
search_facets_range.go
search_facets_range_test.go
search_facets_statistical.go
search_facets_statistical_script.go
search_facets_statistical_script_test.go
search_facets_statistical_test.go
search_facets_terms.go
search_facets_terms_stats.go
search_facets_terms_stats_test.go
search_facets_terms_test.go
search_facets_test.go
search_filters_and.go
search_filters_and_test.go
search_filters_bool.go
search_filters_bool_test.go
search_filters_exists.go
search_filters_exists_test.go
search_filters_geo_distance.go
search_filters_geo_distance_test.go
search_filters_geo_polygon.go
search_filters_geo_polygon_test.go
search_filters_has_child.go
search_filters_has_child_test.go
search_filters_has_parent.go
search_filters_has_parent_test.go
search_filters_ids.go
search_filters_ids_test.go
search_filters_limit.go
search_filters_limit_test.go
search_filters_match_all.go
search_filters_match_all_test.go
search_filters_missing.go
search_filters_missing_test.go
search_filters_nested.go
search_filters_nested_test.go
search_filters_not.go
search_filters_not_test.go
search_filters_or.go
search_filters_or_test.go
search_filters_prefix.go
search_filters_prefix_test.go
search_filters_query.go
search_filters_query_test.go
search_filters_range.go
search_filters_range_test.go
search_filters_regexp.go
search_filters_regexp_test.go
search_filters_term.go
search_filters_term_test.go
search_filters_terms.go
search_filters_terms_test.go
search_filters_type.go
search_filters_type_test.go
search_queries_bool.go
search_queries_bool_test.go
search_queries_boosting.go
search_queries_boosting_test.go
search_queries_common.go
search_queries_common_test.go
search_queries_custom_filters_score.go
search_queries_custom_score.go
search_queries_dis_max.go
search_queries_filtered.go
search_queries_fsq.go
search_queries_fsq_score_funcs.go
search_queries_fsq_test.go
search_queries_fuzzy.go
search_queries_fuzzy_like_this.go
search_queries_fuzzy_like_this_field_query.go
search_queries_fuzzy_like_this_field_query_test.go
search_queries_fuzzy_like_this_query_test.go
search_queries_fuzzy_test.go
search_queries_has_child.go
search_queries_has_child_test.go
search_queries_has_parent.go
search_queries_has_parent_test.go
search_queries_ids.go
search_queries_ids_test.go
search_queries_match.go
search_queries_match_all.go
search_queries_match_all_test.go
search_queries_match_test.go
search_queries_more_like_this.go
search_queries_more_like_this_field.go
search_queries_more_like_this_field_test.go
search_queries_more_like_this_test.go
search_queries_multi_match.go
search_queries_multi_match_test.go
search_queries_nested.go
search_queries_nested_test.go
search_queries_prefix.go
search_queries_prefix_test.go
search_queries_query_string.go
search_queries_query_string_test.go
search_queries_range.go
search_queries_range_test.go
search_queries_regexp.go
search_queries_regexp_test.go
search_queries_simple_query_string.go
search_queries_simple_query_string_test.go
search_queries_template_query.go
search_queries_template_query_test.go
search_queries_term.go
search_queries_term_test.go
search_queries_terms.go
search_queries_terms_test.go
search_queries_wildcard.go
search_queries_wildcard_test.go
search_request.go
search_request_test.go
search_source.go
search_source_test.go
search_suggester_test.go
search_templates_test.go
search_test.go
sort.go
sort_test.go
suggest.go
suggest_field.go
suggest_test.go
suggester.go
suggester_completion.go
suggester_completion_fuzzy.go
suggester_completion_fuzzy_test.go
suggester_completion_test.go
suggester_context.go
suggester_context_category.go
suggester_context_category_test.go
suggester_context_geo.go
suggester_context_geo_test.go
suggester_phrase.go
suggester_phrase_test.go
suggester_term.go
suggester_term_test.go
update.go
update_test.go
克隆/下载
search_queries_multi_match.go 5.98 KB
一键复制 编辑 原始数据 按行查看 历史
// Copyright 2012-2015 Oliver Eilhard. All rights reserved.
// Use of this source code is governed by a MIT-license.
// See http://olivere.mit-license.org/license.txt for details.
package elastic
import (
"fmt"
"strings"
)
// The multi_match query builds further on top of the match query by allowing multiple fields to be specified.
// For more details, see:
// http://www.elasticsearch.org/guide/reference/query-dsl/multi-match-query.html
type MultiMatchQuery struct {
Query
text interface{}
fields []string
fieldBoosts map[string]*float32
matchQueryType string // best_fields, most_fields, cross_fields, phrase, phrase_prefix
operator string // and / or
analyzer string
boost *float32
slop *int
fuzziness string
prefixLength *int
maxExpansions *int
minimumShouldMatch string
rewrite string
fuzzyRewrite string
useDisMax *bool
tieBreaker *float32
lenient *bool
cutoffFrequency *float32
zeroTermsQuery string
queryName string
}
func NewMultiMatchQuery(text interface{}, fields ...string) MultiMatchQuery {
q := MultiMatchQuery{
text: text,
fields: make([]string, 0),
fieldBoosts: make(map[string]*float32),
}
q.fields = append(q.fields, fields...)
return q
}
func (q MultiMatchQuery) Field(field string) MultiMatchQuery {
q.fields = append(q.fields, field)
return q
}
func (q MultiMatchQuery) FieldWithBoost(field string, boost float32) MultiMatchQuery {
q.fields = append(q.fields, field)
q.fieldBoosts[field] = &boost
return q
}
// Type can be: "best_fields", "boolean", "most_fields", "cross_fields",
// "phrase", or "phrase_prefix".
func (q MultiMatchQuery) Type(matchQueryType string) MultiMatchQuery {
zero := float32(0.0)
one := float32(1.0)
switch strings.ToLower(matchQueryType) {
default: // best_fields / boolean
q.matchQueryType = "best_fields"
q.tieBreaker = &zero
case "most_fields":
q.matchQueryType = "most_fields"
q.tieBreaker = &one
case "cross_fields":
q.matchQueryType = "cross_fields"
q.tieBreaker = &zero
case "phrase":
q.matchQueryType = "phrase"
q.tieBreaker = &zero
case "phrase_prefix":
q.matchQueryType = "phrase_prefix"
q.tieBreaker = &zero
}
return q
}
func (q MultiMatchQuery) Operator(operator string) MultiMatchQuery {
q.operator = operator
return q
}
func (q MultiMatchQuery) Analyzer(analyzer string) MultiMatchQuery {
q.analyzer = analyzer
return q
}
func (q MultiMatchQuery) Boost(boost float32) MultiMatchQuery {
q.boost = &boost
return q
}
func (q MultiMatchQuery) Slop(slop int) MultiMatchQuery {
q.slop = &slop
return q
}
func (q MultiMatchQuery) Fuzziness(fuzziness string) MultiMatchQuery {
q.fuzziness = fuzziness
return q
}
func (q MultiMatchQuery) PrefixLength(prefixLength int) MultiMatchQuery {
q.prefixLength = &prefixLength
return q
}
func (q MultiMatchQuery) MaxExpansions(maxExpansions int) MultiMatchQuery {
q.maxExpansions = &maxExpansions
return q
}
func (q MultiMatchQuery) MinimumShouldMatch(minimumShouldMatch string) MultiMatchQuery {
q.minimumShouldMatch = minimumShouldMatch
return q
}
func (q MultiMatchQuery) Rewrite(rewrite string) MultiMatchQuery {
q.rewrite = rewrite
return q
}
func (q MultiMatchQuery) FuzzyRewrite(fuzzyRewrite string) MultiMatchQuery {
q.fuzzyRewrite = fuzzyRewrite
return q
}
// Deprecated.
func (q MultiMatchQuery) UseDisMax(useDisMax bool) MultiMatchQuery {
q.useDisMax = &useDisMax
return q
}
func (q MultiMatchQuery) TieBreaker(tieBreaker float32) MultiMatchQuery {
q.tieBreaker = &tieBreaker
return q
}
func (q MultiMatchQuery) Lenient(lenient bool) MultiMatchQuery {
q.lenient = &lenient
return q
}
func (q MultiMatchQuery) CutoffFrequency(cutoff float32) MultiMatchQuery {
q.cutoffFrequency = &cutoff
return q
}
// ZeroTermsQuery can be "all" or "none".
func (q MultiMatchQuery) ZeroTermsQuery(zeroTermsQuery string) MultiMatchQuery {
q.zeroTermsQuery = zeroTermsQuery
return q
}
func (q MultiMatchQuery) QueryName(queryName string) MultiMatchQuery {
q.queryName = queryName
return q
}
func (q MultiMatchQuery) Source() interface{} {
//
// {
// "multi_match" : {
// "query" : "this is a test",
// "fields" : [ "subject", "message" ]
// }
// }
source := make(map[string]interface{})
multiMatch := make(map[string]interface{})
source["multi_match"] = multiMatch
multiMatch["query"] = q.text
if len(q.fields) > 0 {
fields := make([]string, 0)
for _, field := range q.fields {
if boost, found := q.fieldBoosts[field]; found {
if boost != nil {
fields = append(fields, fmt.Sprintf("%s^%f", field, *boost))
} else {
fields = append(fields, field)
}
} else {
fields = append(fields, field)
}
}
multiMatch["fields"] = fields
}
if q.matchQueryType != "" {
multiMatch["type"] = q.matchQueryType
}
if q.operator != "" {
multiMatch["operator"] = q.operator
}
if q.analyzer != "" {
multiMatch["analyzer"] = q.analyzer
}
if q.boost != nil {
multiMatch["boost"] = *q.boost
}
if q.slop != nil {
multiMatch["slop"] = *q.slop
}
if q.fuzziness != "" {
multiMatch["fuzziness"] = q.fuzziness
}
if q.prefixLength != nil {
multiMatch["prefix_length"] = *q.prefixLength
}
if q.maxExpansions != nil {
multiMatch["max_expansions"] = *q.maxExpansions
}
if q.minimumShouldMatch != "" {
multiMatch["minimum_should_match"] = q.minimumShouldMatch
}
if q.rewrite != "" {
multiMatch["rewrite"] = q.rewrite
}
if q.fuzzyRewrite != "" {
multiMatch["fuzzy_rewrite"] = q.fuzzyRewrite
}
if q.useDisMax != nil {
multiMatch["use_dis_max"] = *q.useDisMax
}
if q.tieBreaker != nil {
multiMatch["tie_breaker"] = *q.tieBreaker
}
if q.lenient != nil {
multiMatch["lenient"] = *q.lenient
}
if q.cutoffFrequency != nil {
multiMatch["cutoff_frequency"] = *q.cutoffFrequency
}
if q.zeroTermsQuery != "" {
multiMatch["zero_terms_query"] = q.zeroTermsQuery
}
if q.queryName != "" {
multiMatch["_name"] = q.queryName
}
return source
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/awol2010ex/github.com-olivere-elastic.git
git@gitee.com:awol2010ex/github.com-olivere-elastic.git
awol2010ex
github.com-olivere-elastic
github.com-olivere-elastic
v2.0.7

搜索帮助