jav*_*nna 194
区别很简单:过滤器被缓存并且不会影响分数,因此比查询更快.看看这里也是.假设查询通常是用户键入的内容并且几乎不可预测,而过滤器可帮助用户缩小搜索结果范围,例如使用facet.
sam*_*sam 12
Say索引myindex
包含三个文件:
curl -XPOST localhost:9200/myindex/mytype -d '{ "msg": "Hello world!" }'
curl -XPOST localhost:9200/myindex/mytype -d '{ "msg": "Hello world! I am Sam." }'
curl -XPOST localhost:9200/myindex/mytype -d '{ "msg": "Hi Stack Overflow!" }'
Run Code Online (Sandbox Code Playgroud)
查询:文档与查询的匹配程度
hello sam
(使用关键字must
)curl localhost:9200/myindex/_search?pretty -d '
{
"query": { "bool": { "must": { "match": { "msg": "hello sam" }}}}
}'
Run Code Online (Sandbox Code Playgroud)
文档的"Hello world! I am Sam."
分数高于"Hello world!"
,因为前者匹配查询中的两个单词.文件得分.
"hits" : [
...
"_score" : 0.74487394,
"_source" : {
"name" : "Hello world! I am Sam."
}
...
"_score" : 0.22108285,
"_source" : {
"name" : "Hello world!"
}
...
Run Code Online (Sandbox Code Playgroud)
过滤:文档是否与查询匹配
hello sam
(使用关键字filter
)curl localhost:9200/myindex/_search?pretty -d '
{
"query": { "bool": { "filter": { "match": { "msg": "hello sam" }}}}
}'
Run Code Online (Sandbox Code Playgroud)
包含hello
或sam
返回的文档.文件没有评分.
"hits" : [
...
"_score" : 0.0,
"_source" : {
"name" : "Hello world!"
}
...
"_score" : 0.0,
"_source" : {
"name" : "Hello world! I am Sam."
}
...
Run Code Online (Sandbox Code Playgroud)
Rah*_*ali 10
基本上,当您想要使用评分对文档执行搜索时,会使用查询.过滤器用于缩小使用查询获得的结果集.过滤器是布尔值.
例如,假设你有一个像zomato这样的餐馆索引.现在您要搜索提供"披萨"的餐馆,这基本上是您的搜索关键字.
因此,您将使用查询来查找包含"披萨"的所有文档,并获得一些结果.
现在说你想要提供披萨的餐厅列表,并且评级为至少4.0.
因此,您需要做的是在查询中使用关键字"pizza",并将过滤器应用于4.0.
会发生什么情况是过滤器通常应用于通过查询索引获得的结果.
归档时间: |
|
查看次数: |
52723 次 |
最近记录: |