我有问题需要设置正确的筛选器。我的查询是这样的:无法为我的弹性搜索查询创建正确的筛选器
{
"query" : {
"bool" : {
"must" : [
{
"query_string" : {
"query" : "example~",
"analyzer" : "standard",
"default_operator" : "OR",
"fuzziness" : "AUTO"
}
},
{
"term" : {
"client" : {
"value" : "MyClient",
"boost" : 1
}
}
},
{
"range" : {
"dateCreate" : {
"gte" : "2016-01-01T00:00:00+0200",
"lte" : "2016-12-31T23:59:59+0200"
}
}
},
{
"match" : {
"lang" : "php OR java"
}
}
]
}
},
"size" : 10,
"from" : 0,
"sort" : [
{
"_score" : {
"order" : "desc"
}
}
]
}
的“郎”字段类型的文本。
我的期望是使用给定的查询字符串获取所有文档,然后我只想选择在其lang字段中具有“PHP”或“Java”的文档。 lang字段只包含“PHP”或“Java”,但从来没有两个字符串,所以我想使用完全匹配,但我无法得到它的工作。
结果实际上是两个文档的列表,但total_count = 2510。
一个不符合我的文档:
{
"id" : "d3295f18-a033-4934-941a-21a8bef901e8",
"client" : "MyClient",
"lang" : "PHP",
"author" : null,
"dateCreate" : "2016-03-31T00:00:00+0200",
"title" : "Sample document",
"content" : "This is a short text describing the deocument."
}
如果删除了'或'会发生什么? – Val
完全一样:我得到两个结果,但必须有大约2,000个文件才能列出。 – altralaser
您可以显示一个应该匹配但不包含文档的示例文档吗? – Val