Elasticsearch——禁止Body中的index覆盖Url中的index参数

本篇继续一下Elasticsearch日常使用的技巧翻译。

在Elasticsearch有很多的api支持在body中指定_index等信息,比如mget或者msearch以及bulk。

默认的情况下,body中的index会覆盖掉url中的index参数。比如:

$ curl localhost:9200/test/_mget?pretty -d '{"docs":[{"_index":"test1","_id":1},{"_index":"test2","_id":2}]}'
{
  "docs" : [ {
    "_index" : "test1",
    "_type" : "tet",
    "_id" : "1",
    "_version" : 2,
    "found" : true,
    "_source":{"name":"1"}
  }, {
    "_index" : "test2",
    "_type" : null,
    "_id" : "2",
    "found" : false
  } ]
}

虽说在url中指定了index为test,但是执行到每个文档时,仍然会按照body里面的内容为准。

此时可以通过设置参数rest.action.multi.allow_explicit_indexfalse来关闭覆盖功能。

这个设置会对所有的节点起作用,设置方法如下:

config/elasticsearch.yml中添加:

rest.action.multi.allow_explicit_index: false

然后重启Elasticsearch,再次执行就会发现,服务器已经提示拒绝。

$ curl localhost:9200/test/_mget?pretty -d '{"docs":[{"_index":"test1","_id":1},{"_index":"test2","_id":2}]}'
{
  "error" : "ElasticsearchIllegalArgumentException[explicit index in multi get is not allowed]",
  "status" : 400
}

本文转自博客园xingoo的博客,原文链接:Elasticsearch——禁止Body中的index覆盖Url中的index参数,如需转载请自行联系原博主。

时间: 2024-08-01 00:09:52

Elasticsearch——禁止Body中的index覆盖Url中的index参数的相关文章

教你如何在CI框架中使用 .htaccess 隐藏url中index.php_php技巧

秉承MVC架构的思想,CI中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用.也就是说,在默认情况下,所有CI开发项目的URL都形如以下这种形式: http://localhost/index.php/blog/logs/this_is_a_test_entry 很显然,默认情况下,index.php在URL地址段中的存在一定程度上影响了URL的简洁和SEO的进行.我们可以通过下面本文介绍的方法来去掉这个讨厌的Index.php. 你或许已经注意到在CodeIgniter用

1、C#中如何正确对url中的参数进行解码以 2、static变量

问题描述 问题一:"你好"的gb2312编码是:%C4%E3%BA%C3.utf-8编码是:%20%E4%BD%A0%E5%A5%BD我现在要的功能是aa.aspx?wd=%C4%E3%BA%C3和aa.aspx?wd=%20%E4%BD%A0%E5%A5%BD和aa.aspx?wd=你好在上述3种情况中,aa.aspx中都能识别并成功读取到关键词wd的值是"你好"问题二:有50万条记录,每题仅有8-10个汉字而已,不经常改动,但是很频繁用到,每次都从数据库读取我嫌

解析如何去掉CodeIgniter URL中的index.php

CI默认的rewrite url中是类似这样的,例如你的CI根目录是在/CodeIgniter/下,你的下面的二级url就类似这样http://localhost /CodeIgniter/index.php/welcome.不太好看,怎么把其中的index.php取掉呢? 1. 打开apache的配置文件,conf/httpd.conf :LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉. 搜索 AllowOverride No

修改apache配置文件去除thinkphp url中的index.php

 这篇文章主要介绍了修改apache配置文件去除thinkphp url中的index.php的方法,大家参考使用吧 例如你的原路径是 http://localhost/test/index.php/index/add 那么现在的地址是 http://localhost/test/index/add 如何去掉index.php呢?   1.httpd.conf配置文件中加载了mod_rewrite.so模块  //在APACHE里面去配置   代码如下: #LoadModule rewrite_

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

原文:ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php URL重写 通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持. 下面是Apache的配置过程,可以参考下: 1.httpd.conf配置文件中加载了mod_rewrite.so模块 2.AllowOverride None 将None改为

Yii隐藏URL中index.php的方法_php实例

本文实例讲述了Yii隐藏URL中index.php的方法.分享给大家供大家参考,具体如下: 一.修改config/下的main.php里的: 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w

解析如何去掉CodeIgniter URL中的index.php_php技巧

CI默认的rewrite url中是类似这样的,例如你的CI根目录是在/CodeIgniter/下,你的下面的二级url就类似这样http://localhost/CodeIgniter/index.php/welcome.不太好看,怎么把其中的index.php取掉呢?1. 打开apache的配置文件,conf/httpd.conf :LoadModule rewrite_module modules/mod_rewrite.so,把该行前的#去掉.搜索 AllowOverride None(

Yii隐藏URL中index.php的方法

本文实例讲述了Yii隐藏URL中index.php的方法.分享给大家供大家参考,具体如下: 一.修改config/下的main.php里的: 'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w

URL中允许携带sessionid带来的安全隐患

很多WEB开发语言为了防止浏览器禁止了cookie而无法识别用户,允许在URL中携带sessionid,这样虽然方便,但却有可能引起钓鱼的安全漏洞. 图示: 下图是从测试组发来的安全报告中剪出来的,图有些小问题,本来想重画1个,在visio中没找到合适的图.所以只能用别人的图了. 说明: 让我们对上图的步骤进行详细说明: 1. 黑客用自己的帐号登录,假设登录页面是:http://www.abc.com/login.jsp 2. 服务器返回登录成功. 3. 黑客从cookie中查看自己的sessi