module.exports = function()

in api_server/es_2_0/search.js [1:255]


module.exports = function (api) {
  api.addEndpointDescription('_search', {
    methods: ['GET', 'POST'],
    priority: 10, // collides with get doc by id
    patterns: [
      "{indices}/{types}/_search",
      "{indices}/_search",
      "_search"
    ],
    url_params: {
      q: "",
      df: "",
      analyzer: "",
      default_operator: ["AND", "OR"],
      explain: "__flag__",
      _source: "",
      _source_include: "",
      _source_exclude: "",
      fields: [],
      sort: "",
      track_scores: "__flag__",
      timeout: 1,
      from: 0,
      size: 10,
      search_type: ["dfs_query_then_fetch", "dfs_query_and_fetch", "query_then_fetch", "query_and_fetch", "count", "scan"],
      terminate_after: 10,
      lowercase_expanded_terms: ["true", "false"],
      analyze_wildcard: "__flag__",
      preference: ["_primary", "_primary_first", "_local", "_only_node:xyz", "_prefer_node:xyz", "_shards:2,3"],
      scroll: "5m",
      scroll_id: "",
      routing: "",
      request_cache: ["true", "false"]
    },
    data_autocomplete_rules: {
      query: {
        // populated by a global rule
      },
      aggs: {
        __template: {
          "NAME": {
            "AGG_TYPE": {}
          }
        }
      },

      post_filter: {
        __scope_link: 'GLOBAL.filter'
      },
      size: {
        __template: 20
      },
      from: 0,
      sort: {
        __template: [
          {
            'FIELD': {
              'order': 'desc'
            }
          }
        ],
        __any_of: [
          {
            '{field}': {
              'order': {
                __one_of: ['desc', 'asc']
              },
              missing: {
                __one_of: ['_last', '_first']
              },
              mode: {
                __one_of: ['min', 'max', 'avg', 'sum']
              },
              nested_path: "",
              nested_filter: {
                __scope_link: "GLOBAL.filter"
              }
            }
          },
          '{field}',
          '_score',
          {
            '_geo_distance': {
              __template: {
                "FIELD": {
                  lat: 40,
                  lon: -70
                },
                order: "asc"
              },
              "{field}": {
                __one_of: [
                  {
                    __template: {
                      lat: 40,
                      lon: -70
                    },
                    lat: 40,
                    lon: -70
                  },
                  [
                    {
                      __template: {
                        lat: 40,
                        lon: -70
                      },
                      lat: 40,
                      lon: -70
                    }
                  ],
                  [""],
                  ""
                ]
              },
              distance_type: {__one_of: ["sloppy_arc", "arc", "plane"]},
              sort_mode: {__one_of: ["min", "max", "avg"]},
              order: {__one_of: ["asc", "desc"]},
              unit: "km"
            }
          }
        ]
      },
      fields: ['{field}'],
      fielddata_fields: ["{field}"],
      script_fields: {
        __template: {
          'FIELD': {
            'script': {
              // populated by a global rule
            }
          }
        },
        '*': {
          __scope_link: 'GLOBAL.script'
        }
      },
      partial_fields: {
        __template: {
          'NAME': {
            include: []
          }
        },
        '*': {
          include: [],
          exclude: []
        }
      },
      highlight: {
        // populated by a global rule
      },
      _source: {
        __one_of: [
          "{field}",
          ["{field}"],
          {
            "include": {
              __one_of: [
                "{field}",
                ["{field}"]
              ]
            },
            "exclude": {
              __one_of: [
                "{field}",
                ["{field}"]
              ]
            }
          }
        ]
      },
      explain: {
        __one_of: [true, false]
      },
      stats: [''],
      timeout: "1s",
      version: {__one_of: [true, false]}
    }
  });

  api.addEndpointDescription('_search_template', {
    methods: ['GET'],
    patterns: [
      "{indices}/{types}/_search/template",
      "{indices}/_search/template",
      "_search/template"
    ],
    data_autocomplete_rules: {
      "template": {
        __one_of: [
          {__scope_link: "_search"},
          {__scope_link: "GLOBAL.script"}
        ]
      },
      "params": {}
    }
  });

  api.addEndpointDescription('_render_search_template', {
    methods: ['GET'],
    patterns: [
      "_render/template"
    ],
    data_autocomplete_rules: {
      __one_of: [
        {"inline": {__scope_link: "_search"}},
        {__scope_link: "GLOBAL.script"}
      ],
      "params": {}
    }
  });

  api.addEndpointDescription('_render_search_template_with_id', {
    methods: ['GET'],
    patterns: [
      "_render/template/{id}"
    ],
    data_autocomplete_rules: {
      "params": {}
    }
  });

  api.addEndpointDescription('_get_delete_search_template', {
    methods: ['GET', 'DELETE'],
    patterns: [
      "_search/template/{id}"
    ]
  });

  api.addEndpointDescription('_put_search_template', {
    methods: ['PUT'],
    patterns: [
      "_search/template/{id}"
    ],
    data_autocomplete_rules: {
      "template": {
        __scope_link: "_search"
      }
    }
  });

  api.addEndpointDescription('_search_shards', {
    methods: ['GET'],
    priority: 10, // collides with get doc by id
    patterns: [
      "{indices}/{types}/_search_shards",
      "{indices}/_search_shards",
      "_search_shards"
    ],
    url_params: {
      preference: ["_primary", "_primary_first", "_local", "_only_node:xyz", "_prefer_node:xyz", "_shards:2,3"],
      routing: "",
      local: "__flag__"
    }
  });
};