Tree @upstream/5.0.69 (Download .tar.gz)
- cluster-test
- config
- etc
- recipes
- uritemplates
- .gitignore
- .travis.yml
- acknowledged_response.go
- backoff.go
- backoff_test.go
- bulk.go
- bulk_delete_request.go
- bulk_delete_request_easyjson.go
- bulk_delete_request_test.go
- bulk_index_request.go
- bulk_index_request_easyjson.go
- bulk_index_request_test.go
- bulk_processor.go
- bulk_processor_test.go
- bulk_request.go
- bulk_test.go
- bulk_update_request.go
- bulk_update_request_easyjson.go
- bulk_update_request_test.go
- canonicalize.go
- canonicalize_test.go
- CHANGELOG-3.0.md
- CHANGELOG-5.0.md
- 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
- CODE_OF_CONDUCT.md
- connection.go
- CONTRIBUTING.md
- CONTRIBUTORS
- count.go
- count_test.go
- decoder.go
- decoder_test.go
- delete.go
- delete_by_query.go
- delete_by_query_test.go
- delete_template.go
- delete_template_test.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
- field_caps.go
- field_caps_test.go
- field_stats.go
- field_stats_test.go
- geo_point.go
- geo_point_test.go
- get.go
- get_template.go
- get_template_test.go
- get_test.go
- highlight.go
- highlight_test.go
- index.go
- index_test.go
- indices_analyze.go
- indices_analyze_test.go
- indices_close.go
- indices_close_test.go
- indices_create.go
- indices_create_test.go
- indices_delete.go
- indices_delete_template.go
- indices_delete_test.go
- indices_exists.go
- indices_exists_template.go
- indices_exists_template_test.go
- indices_exists_test.go
- indices_exists_type.go
- indices_exists_type_test.go
- indices_flush.go
- indices_flush_test.go
- indices_forcemerge.go
- indices_forcemerge_test.go
- indices_get.go
- indices_get_aliases.go
- indices_get_aliases_test.go
- indices_get_field_mapping.go
- indices_get_field_mapping_test.go
- indices_get_mapping.go
- indices_get_mapping_test.go
- indices_get_settings.go
- indices_get_settings_test.go
- indices_get_template.go
- indices_get_template_test.go
- indices_get_test.go
- indices_open.go
- indices_open_test.go
- indices_put_alias.go
- indices_put_alias_test.go
- indices_put_mapping.go
- indices_put_mapping_test.go
- indices_put_settings.go
- indices_put_settings_test.go
- indices_put_template.go
- indices_refresh.go
- indices_refresh_test.go
- indices_rollover.go
- indices_rollover_test.go
- indices_segments.go
- indices_segments_test.go
- indices_shrink.go
- indices_shrink_test.go
- indices_stats.go
- indices_stats_test.go
- ingest_delete_pipeline.go
- ingest_delete_pipeline_test.go
- ingest_get_pipeline.go
- ingest_get_pipeline_test.go
- ingest_put_pipeline.go
- ingest_put_pipeline_test.go
- ingest_simulate_pipeline.go
- ingest_simulate_pipeline_test.go
- inner_hit.go
- inner_hit_test.go
- ISSUE_TEMPLATE.md
- LICENSE
- logger.go
- mget.go
- mget_test.go
- msearch.go
- msearch_test.go
- mtermvectors.go
- mtermvectors_test.go
- nodes_info.go
- nodes_info_test.go
- nodes_stats.go
- nodes_stats_test.go
- percolate_test.go
- ping.go
- ping_test.go
- plugins.go
- plugins_test.go
- put_template.go
- put_template_test.go
- query.go
- README.md
- reindex.go
- reindex_test.go
- request.go
- request_test.go
- rescore.go
- rescorer.go
- response.go
- response_test.go
- retrier.go
- retrier_test.go
- retry.go
- retry_test.go
- run-es.sh
- script.go
- script_test.go
- scroll.go
- scroll_test.go
- search.go
- search_aggs.go
- search_aggs_bucket_adjacency_matrix.go
- search_aggs_bucket_adjacency_matrix_test.go
- search_aggs_bucket_children.go
- search_aggs_bucket_children_test.go
- search_aggs_bucket_date_histogram.go
- search_aggs_bucket_date_histogram_test.go
- search_aggs_bucket_date_range.go
- search_aggs_bucket_date_range_test.go
- search_aggs_bucket_diversified_sampler.go
- search_aggs_bucket_diversified_sampler_test.go
- search_aggs_bucket_filter.go
- search_aggs_bucket_filter_test.go
- search_aggs_bucket_filters.go
- search_aggs_bucket_filters_test.go
- search_aggs_bucket_geo_distance.go
- search_aggs_bucket_geo_distance_test.go
- search_aggs_bucket_geohash_grid.go
- search_aggs_bucket_geohash_grid_test.go
- search_aggs_bucket_global.go
- search_aggs_bucket_global_test.go
- search_aggs_bucket_histogram.go
- search_aggs_bucket_histogram_test.go
- search_aggs_bucket_ip_range.go
- search_aggs_bucket_ip_range_test.go
- search_aggs_bucket_missing.go
- search_aggs_bucket_missing_test.go
- search_aggs_bucket_nested.go
- search_aggs_bucket_nested_test.go
- search_aggs_bucket_range.go
- search_aggs_bucket_range_test.go
- search_aggs_bucket_reverse_nested.go
- search_aggs_bucket_reverse_nested_test.go
- search_aggs_bucket_sampler.go
- search_aggs_bucket_sampler_test.go
- search_aggs_bucket_significant_terms.go
- search_aggs_bucket_significant_terms_test.go
- search_aggs_bucket_terms.go
- search_aggs_bucket_terms_test.go
- search_aggs_matrix_stats.go
- search_aggs_matrix_stats_test.go
- search_aggs_metrics_avg.go
- search_aggs_metrics_avg_test.go
- search_aggs_metrics_cardinality.go
- search_aggs_metrics_cardinality_test.go
- search_aggs_metrics_extended_stats.go
- search_aggs_metrics_extended_stats_test.go
- search_aggs_metrics_geo_bounds.go
- search_aggs_metrics_geo_bounds_test.go
- search_aggs_metrics_geo_centroid.go
- search_aggs_metrics_geo_centroid_test.go
- search_aggs_metrics_max.go
- search_aggs_metrics_max_test.go
- search_aggs_metrics_min.go
- search_aggs_metrics_min_test.go
- search_aggs_metrics_percentile_ranks.go
- search_aggs_metrics_percentile_ranks_test.go
- search_aggs_metrics_percentiles.go
- search_aggs_metrics_percentiles_test.go
- search_aggs_metrics_stats.go
- search_aggs_metrics_stats_test.go
- search_aggs_metrics_sum.go
- search_aggs_metrics_sum_test.go
- search_aggs_metrics_top_hits.go
- search_aggs_metrics_top_hits_test.go
- search_aggs_metrics_value_count.go
- search_aggs_metrics_value_count_test.go
- search_aggs_pipeline_avg_bucket.go
- search_aggs_pipeline_avg_bucket_test.go
- search_aggs_pipeline_bucket_script.go
- search_aggs_pipeline_bucket_script_test.go
- search_aggs_pipeline_bucket_selector.go
- search_aggs_pipeline_bucket_selector_test.go
- search_aggs_pipeline_cumulative_sum.go
- search_aggs_pipeline_cumulative_sum_test.go
- search_aggs_pipeline_derivative.go
- search_aggs_pipeline_derivative_test.go
- search_aggs_pipeline_max_bucket.go
- search_aggs_pipeline_max_bucket_test.go
- search_aggs_pipeline_min_bucket.go
- search_aggs_pipeline_min_bucket_test.go
- search_aggs_pipeline_mov_avg.go
- search_aggs_pipeline_mov_avg_test.go
- search_aggs_pipeline_percentiles_bucket.go
- search_aggs_pipeline_percentiles_bucket_test.go
- search_aggs_pipeline_serial_diff.go
- search_aggs_pipeline_serial_diff_test.go
- search_aggs_pipeline_stats_bucket.go
- search_aggs_pipeline_stats_bucket_test.go
- search_aggs_pipeline_sum_bucket.go
- search_aggs_pipeline_sum_bucket_test.go
- search_aggs_pipeline_test.go
- search_aggs_test.go
- search_collapse_builder.go
- search_collapse_builder_test.go
- search_queries_bool.go
- search_queries_bool_test.go
- search_queries_boosting.go
- search_queries_boosting_test.go
- search_queries_common_terms.go
- search_queries_common_terms_test.go
- search_queries_constant_score.go
- search_queries_constant_score_test.go
- search_queries_dis_max.go
- search_queries_dis_max_test.go
- search_queries_exists.go
- search_queries_exists_test.go
- search_queries_fsq.go
- search_queries_fsq_score_funcs.go
- search_queries_fsq_test.go
- search_queries_fuzzy.go
- search_queries_fuzzy_test.go
- search_queries_geo_bounding_box.go
- search_queries_geo_bounding_box_test.go
- search_queries_geo_distance.go
- search_queries_geo_distance_test.go
- search_queries_geo_polygon.go
- search_queries_geo_polygon_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_indices.go
- search_queries_indices_test.go
- search_queries_match.go
- search_queries_match_all.go
- search_queries_match_all_test.go
- search_queries_match_none.go
- search_queries_match_none_test.go
- search_queries_match_phrase.go
- search_queries_match_phrase_prefix.go
- search_queries_match_phrase_prefix_test.go
- search_queries_match_phrase_test.go
- search_queries_match_test.go
- search_queries_more_like_this.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_parent_id.go
- search_queries_parent_id_test.go
- search_queries_percolator.go
- search_queries_percolator_test.go
- search_queries_prefix.go
- search_queries_prefix_example_test.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_raw_string.go
- search_queries_raw_string_test.go
- search_queries_regexp.go
- search_queries_regexp_test.go
- search_queries_script.go
- search_queries_script_test.go
- search_queries_simple_query_string.go
- search_queries_simple_query_string_test.go
- search_queries_slice.go
- search_queries_slice_test.go
- search_queries_term.go
- search_queries_term_test.go
- search_queries_terms.go
- search_queries_terms_test.go
- search_queries_type.go
- search_queries_type_test.go
- search_queries_wildcard.go
- search_queries_wildcard_test.go
- search_request.go
- search_request_test.go
- search_shards.go
- search_shards_test.go
- search_source.go
- search_source_test.go
- search_suggester_test.go
- search_terms_lookup.go
- search_terms_lookup_test.go
- search_test.go
- setup_test.go
- snapshot_create.go
- snapshot_create_repository.go
- snapshot_create_repository_test.go
- snapshot_create_test.go
- snapshot_delete_repository.go
- snapshot_delete_repository_test.go
- snapshot_get_repository.go
- snapshot_get_repository_test.go
- snapshot_verify_repository.go
- snapshot_verify_repository_test.go
- sort.go
- sort_test.go
- suggest.go
- suggest_field.go
- suggest_field_test.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_context_test.go
- suggester_phrase.go
- suggester_phrase_test.go
- suggester_term.go
- suggester_term_test.go
- tasks_cancel.go
- tasks_cancel_test.go
- tasks_get_task.go
- tasks_get_task_test.go
- tasks_list.go
- tasks_list_test.go
- termvectors.go
- termvectors_test.go
- update.go
- update_by_query.go
- update_by_query_test.go
- update_integration_test.go
- update_test.go
- validate.go
- validate_test.go
search_queries_bool.go @upstream/5.0.69 — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | // Copyright 2012-present 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" // A bool query matches documents matching boolean // combinations of other queries. // For more details, see: // https://www.elastic.co/guide/en/elasticsearch/reference/5.2/query-dsl-bool-query.html type BoolQuery struct { Query mustClauses []Query mustNotClauses []Query filterClauses []Query shouldClauses []Query boost *float64 disableCoord *bool minimumShouldMatch string adjustPureNegative *bool queryName string } // Creates a new bool query. func NewBoolQuery() *BoolQuery { return &BoolQuery{ mustClauses: make([]Query, 0), mustNotClauses: make([]Query, 0), filterClauses: make([]Query, 0), shouldClauses: make([]Query, 0), } } func (q *BoolQuery) Must(queries ...Query) *BoolQuery { q.mustClauses = append(q.mustClauses, queries...) return q } func (q *BoolQuery) MustNot(queries ...Query) *BoolQuery { q.mustNotClauses = append(q.mustNotClauses, queries...) return q } func (q *BoolQuery) Filter(filters ...Query) *BoolQuery { q.filterClauses = append(q.filterClauses, filters...) return q } func (q *BoolQuery) Should(queries ...Query) *BoolQuery { q.shouldClauses = append(q.shouldClauses, queries...) return q } func (q *BoolQuery) Boost(boost float64) *BoolQuery { q.boost = &boost return q } func (q *BoolQuery) DisableCoord(disableCoord bool) *BoolQuery { q.disableCoord = &disableCoord return q } func (q *BoolQuery) MinimumShouldMatch(minimumShouldMatch string) *BoolQuery { q.minimumShouldMatch = minimumShouldMatch return q } func (q *BoolQuery) MinimumNumberShouldMatch(minimumNumberShouldMatch int) *BoolQuery { q.minimumShouldMatch = fmt.Sprintf("%d", minimumNumberShouldMatch) return q } func (q *BoolQuery) AdjustPureNegative(adjustPureNegative bool) *BoolQuery { q.adjustPureNegative = &adjustPureNegative return q } func (q *BoolQuery) QueryName(queryName string) *BoolQuery { q.queryName = queryName return q } // Creates the query source for the bool query. func (q *BoolQuery) Source() (interface{}, error) { // { // "bool" : { // "must" : { // "term" : { "user" : "kimchy" } // }, // "must_not" : { // "range" : { // "age" : { "from" : 10, "to" : 20 } // } // }, // "filter" : [ // ... // ] // "should" : [ // { // "term" : { "tag" : "wow" } // }, // { // "term" : { "tag" : "elasticsearch" } // } // ], // "minimum_number_should_match" : 1, // "boost" : 1.0 // } // } query := make(map[string]interface{}) boolClause := make(map[string]interface{}) query["bool"] = boolClause // must if len(q.mustClauses) == 1 { src, err := q.mustClauses[0].Source() if err != nil { return nil, err } boolClause["must"] = src } else if len(q.mustClauses) > 1 { var clauses []interface{} for _, subQuery := range q.mustClauses { src, err := subQuery.Source() if err != nil { return nil, err } clauses = append(clauses, src) } boolClause["must"] = clauses } // must_not if len(q.mustNotClauses) == 1 { src, err := q.mustNotClauses[0].Source() if err != nil { return nil, err } boolClause["must_not"] = src } else if len(q.mustNotClauses) > 1 { var clauses []interface{} for _, subQuery := range q.mustNotClauses { src, err := subQuery.Source() if err != nil { return nil, err } clauses = append(clauses, src) } boolClause["must_not"] = clauses } // filter if len(q.filterClauses) == 1 { src, err := q.filterClauses[0].Source() if err != nil { return nil, err } boolClause["filter"] = src } else if len(q.filterClauses) > 1 { var clauses []interface{} for _, subQuery := range q.filterClauses { src, err := subQuery.Source() if err != nil { return nil, err } clauses = append(clauses, src) } boolClause["filter"] = clauses } // should if len(q.shouldClauses) == 1 { src, err := q.shouldClauses[0].Source() if err != nil { return nil, err } boolClause["should"] = src } else if len(q.shouldClauses) > 1 { var clauses []interface{} for _, subQuery := range q.shouldClauses { src, err := subQuery.Source() if err != nil { return nil, err } clauses = append(clauses, src) } boolClause["should"] = clauses } if q.boost != nil { boolClause["boost"] = *q.boost } if q.disableCoord != nil { boolClause["disable_coord"] = *q.disableCoord } if q.minimumShouldMatch != "" { boolClause["minimum_should_match"] = q.minimumShouldMatch } if q.adjustPureNegative != nil { boolClause["adjust_pure_negative"] = *q.adjustPureNegative } if q.queryName != "" { boolClause["_name"] = q.queryName } return query, nil } |