POST http://localhost:9200/test2/drug?pretty { "title": "I can do this" } get test2/drug/_search { "query" : { "match": { "title": "cancer" } } }
映射为:
{ "test2": { "mappings": { "drug": { "properties": { "title": { "type": "string" } } } } } }
运行以上查询将返回文档。我想了解松紧带在幕后做什么?通过查看默认分析器的输出,它不会标记癌症,使其返回“可以”,那么为什么返回带有“可以”一词的文档,又是什么原因导致该文档被返回呢?换句话说,搜索查询“癌症”正在发生什么其他处理。
我是否可以在我的机器上运行一个命令,该命令将清除所有索引和所有内容,因此我的表盘整洁?我执行了删除/ *的操作,但成功了,但仍然匹配了。
测试的问题是,如果您使用的是Sense,则是get请求。在某种意义上,它应该是GET(大写字母)。
get
GET
解释GET与POSTvs.http方法有关。在实际情况下,Sense实际上将GET请求转换为HTTP POST(鉴于许多浏览器不支持带有请求正文的HTTP GET请求)。这意味着,即使您进行编写GET,实际的http请求也是POST。
POST
HTTP POST
由于Sense具有强制将大写字母用于请求方法的自动完成功能,因此在确定是否与请求正文一起使用GET(而不是小写get)请求时,将使用相同的大写字母。如果是,那么该请求将转换为POST一个。如果比较请求方法并确定不是GET,则按原样发送请求,即使用get方法和正文。由于忽略了主体,因此到达Elasticsearch的对象将test2/drug/_search基本上是a match_all。
test2/drug/_search
match_all