Elasticsearch不返回所有文档进行查询

时间:2020-09-23 10:28:00

标签: elasticsearch

我在使用过滤器查询时遇到了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"
   }
}

用例是用户可以通过输入查询来搜索产品,或者可以单击链接以显示属于类别,区域或组的所有产品。

1 个答案:

答案 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。