最近,我继承了ES的实例,并确保我发布此之前阅读ES覆盖到覆盖一整本书,但我怕我无法得到,甚至简单的例子来工作.
我有一个关于我们的暂存环境的索引,它展示了无论如何返回每个文档的行为 - 我在QA环境中有类似的索引,它的工作方式与我期望的一样.例如,我正在对http:// staging运行以下查询:9200/people_alias/_search?explain:
{ "query" :
{ "filtered" :
{ "query" : { "match_all" : {} },
"filter" : { "term" : { "_id" : "34414405382" } } } } }
Run Code Online (Sandbox Code Playgroud)
我在这个暂存环境中注意到的是每个文档的得分为1,无论我指定什么值,它都会在我的索引中返回每个文档...使用?解释我看到以下内容:
_explanation: {
value: 1
description: ConstantScore(*:*), product of:
details: [
{
value: 1, description: boost
}, { value: 1, description: queryNorm } ] }
Run Code Online (Sandbox Code Playgroud)
在我的QA环境中,只能正确返回我观察到的一条记录?解释:
_explanation: {
value: 1
description: ConstantScore(cache(_uid:person#34414405382)), product of:
details: [ {
value: 1,
description: boost
}, {
value: 1,
description: queryNorm
}
]
}
Run Code Online (Sandbox Code Playgroud)
两个索引上的映射几乎相同 - 唯一的区别是我删除了某些字段上的手动字段级提升值,因为我不建议使用字段级提升来支持查询时提升,但这不应影响行为对文档ID进行过滤(对吗?)
有什么线索我可以从解释输出中的差异中收集,还是应该发布索引映射?我应该考虑检查任何服务器级别的设置吗?我在Staging上使用什么查询无关紧要,我可以在其他字段上使用匹配查询和完全匹配查找,而Staging只是使用Score 1.0返回每个结果
我觉得我在Staging环境中做了一件非常明显且明显错误的事情.有人可以解释一下ConstantScore,boost和queryNorm的存在吗?我从其他文献中的例子中看到,我会看到像术语频率等等.
编辑:我从Elastic Search Head插件发出查询
Val*_*Val 11
在您的HEAD插件中,您需要使用POST以便在有效负载中发送查询,否则在_search没有任何约束的情况下命中端点.
在浏览器中,如果您打开开发人员工具并查看网络选项卡,您将看到使用GET时有效负载中没有发送任何内容.
这是人们经常犯的常见错误.一些HTTP客户端(如curl)确实使用GET发送有效负载,但其他(如/head/)不发送.如果您在发送有效负载时使用GET而不是POST,Sense将警告您,并将自动强制POST而不是GET.
总而言之,每当您希望将一些有效负载发送到服务器时,最好始终使用POST,因此您不必关心您正在使用的HTTP客户端的行为.
| 归档时间: |
|
| 查看次数: |
1549 次 |
| 最近记录: |