ES全文检索-match phrase prefix query
match phrase prefix
和match phrase
用法基本一致,区别就在于它允许对最后一个词条进行前缀匹配。
示例
POST _bulk
{ "index" : { "_index" : "test_doc4"} }
{ "content":"I like job"}
{ "index" : { "_index" : "test_doc4"} }
{ "content":"I like java"}
上面构建了部分测试数据,例如现在搜索I like j
文本信息如下:
GET test_doc5/_search
{
"query": {
"match_phrase_prefix": {
"content": {
"query": "i like j"
}
}
}
}
上面查询会将文档中包含I like j
所有匹配的内容全部查出,结果如下:
{
"took" : 14,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.7509375,
"hits" : [
{
"_index" : "test_doc5",
"_type" : "_doc",
"_id" : "Y-BezIQBRNx5Pfd5kwaO",
"_score" : 1.7509375,
"_source" : {
"content" : "I like job"
}
},
{
"_index" : "test_doc5",
"_type" : "_doc",
"_id" : "ZOBezIQBRNx5Pfd5kwaO",
"_score" : 1.7509375,
"_source" : {
"content" : "I like java"
}
}
]
}
}
从结果可以看出,I like java
和I like job
都被查询出来了,因为它们符合I like j
查询字符串。
max_expansions
该属性和match query
中类似,例如你的文档中包含许多I like j
内容的文档,查询时会将这些文档全部返回。而实际上可以通过max_expansions
来限制最多返回多少个。
该属性在多shard的情况下可能表现的与实际参数不一致,这是因为每个shard中的数据不一致导致的。如果shard数量为1时,则不会出现这种问题。
slop
该属性与match phrase query
中用法一致。
原文始发于微信公众号(一只菜鸟程序员):ES全文检索-match phrase prefix query
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72817.html