Elasticsearch路由和通配符

时间:2015-12-18 20:56:43

标签: indexing elasticsearch routing

将Elasticsearch与手动路由一起使用时(在索引文档时直接在http查询中提供路由值),如果路由值中存在通配符,我会尝试使用其ID检索文档。

例如,如果我使用此查询(myRouting作为路由值)将ID为“Arya”的文档编入索引,请注意大写字符:

curl -XPOST 'http://elasticsearch:9200/xxxx/yyyy/Arya?routing=myRouting' -d @dataset/arya_simple.json

当我尝试查询群集时,使用通配符作为路由值,不返回任何文档:

curl -XGET 'http://elasticsearch:9200/xxxx/yyyy/Arya?routing=*'

答案是{"_index":"xxxx","_type":"yyyy","_id":"Arya","found":false}

另一方面,如果我使用其中没有大写字符的路由值(myrouting作为路由值,则不使用大写字符):

curl -XPOST 'http://elasticsearch:9200/xxxx/yyyy/Arya?routing=myrouting' -d @dataset/arya_simple.json

myrouting代替myRouting

它有效,和我刚才做的GET请求一样,给了我文件:

curl -XGET 'http://elasticsearch:9200/xxxx/yyyy/Arya?routing=*'

{"_index":"xxxx","_type":"yyyy","_id":"Arya","_version":1,"found":true,"_source":{ ... .... }}

您是否知道为什么通配符仅在路由值中没有大写时才起作用?

如果我在执行GET时提供*Routing作为路由值,我也会获得该文档。

似乎通配符停在第一个大写的字符......

0 个答案:

没有答案