我在使用过滤器查询时遇到了ES问题,但它没有返回包含查询的所有文档。
"query" => [
"bool" => [
"filter" => [
"term" => [
"group" => "green"
]
]
]
]
我知道该查询在获得一些结果时会起作用,但是我也知道该组中有“绿色”的其他文档不会显示。
关于某些文档为什么显示而其他文档没有显示的任何想法?我检查了拼写,检查组中是否有任何怪异的空格或字符,但它确实是“绿色”。
索引映射为
'body' => [
"mappings" => [
"properties" => [
"area" => [ "type" => "keyword" ],
"category" => [ "type" => "keyword" ],
"group" => [ "type" => "keyword" ]
]
],
"settings" => [
"analysis" => [
"analyzer" => [
"my_analyzer" => [
"tokenizer" => "whitespace",
"filter" => [ "stop" ]
]
]
...
样本数据为
{
"_index": "test_index",
"_type": "_doc",
"_id": "0dbb19dd5b9ef01178ad",
"_score": 0,
"_source": {
"area": "Shirts",
"filepath": "",
"jurisdiction": "Australia",
"resource_type": "Document",
"filesize": 1501430,
"title": "Dashboard Update",
"category": "Mens Shirts",
"group": "green"
}
}
用例是用户可以通过输入查询来搜索产品,或者可以单击链接以显示属于类别,区域或组的所有产品。
答案 0 :(得分:0)
添加包含索引数据,搜索查询和搜索结果的工作示例。
索引映射:
{
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"group": {
"type": "keyword"
}
}
}
}
索引数据:
{
"name":"pizza",
"group":"red"
}
{
"name":"multi grain bread",
"group":"green"
}
{
"name":"pizza",
"group":"green"
}
Saerch查询:
{
"query": {
"bool" : {
"must" : {
"match" : { "group" : "green" }
}
}
}
}
搜索结果:
"hits": [
{
"_index": "stof_64025933",
"_type": "_doc",
"_id": "1",
"_score": 0.4700036,
"_source": {
"name": "multi grain bread",
"group": "green"
}
},
{
"_index": "stof_64025933",
"_type": "_doc",
"_id": "2",
"_score": 0.4700036,
"_source": {
"name": "pizza",
"group": "green"
}
}
]
也使用bool filter query
,搜索结果在那里,只是不同之处在于分数返回为0。