es5 CompletionSuggestionBuilder prefix查询遗漏问题

182 阅读2分钟

问题:prefix查询vm2失败,但实际上该索引存储了vm2数据,不太明白为什么prefix失效,和name字段有关么?

"name": {
            "type": "completion",
            "analyzer": "simple",
            "preserve_separators": true,
            "preserve_position_increments": true,
            "max_input_length": 50
          }

场景: prefix查询语法

GET /xxx*/_search
{
  "suggest" : {
    "nameSuggestion" : {
      "prefix" : "vm2",
      "completion" : {
        "field" : "name"
      }
    }
  }
}

prefix响应结果

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 3,
    "successful": 3,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": 0,
    "hits": []
  },
  "suggest": {
    "nameSuggestion": [
      {
        "text": "vm2",
        "offset": 0,
        "length": 3,
        "options": [
          {
            "text": "@vmoe/node-utils",
            "_index": "tw_m_nodejs_info",
            "_type": "doc",
            "_id": "643ea9b1d6313d2e6f970df8",
            "_score": 1,
            "_source": {
              "_npmUser": {
                "email": "hi@viki.moe",
                "name": "vikiboss"
              },
              "ecosystem": "NPM",
              "name": "@vmoe/node-utils",
              "time": "2023-04-18T12:44:32.039Z",
              "version": "1.3.1"
            }
          },
          {
            "text": "@vmoe/node-utils",
            "_index": "tw_m_nodejs_info",
            "_type": "doc",
            "_id": "643ea9b1d6313d2e6f970df9",
            "_score": 1,
            "_source": {
              "_npmUser": {
                "email": "hi@viki.moe",
                "name": "vikiboss"
              },
              "ecosystem": "NPM",
              "name": "@vmoe/node-utils",
              "time": "2023-04-18T12:48:43.257Z",
              "version": "1.3.2"
            }
          },
          {
            "text": "@vmoe/node-utils",
            "_index": "tw_m_nodejs_info",
            "_type": "doc",
            "_id": "643c9e05d6313d2e6f964cd0",
            "_score": 1,
            "_source": {
              "_npmUser": {
                "email": "hi@viki.moe",
                "name": "vikiboss"
              },
              "ecosystem": "NPM",
              "name": "@vmoe/node-utils",
              "time": "2023-04-17T01:16:01.558Z",
              "version": "1.2.1"
            }
          },
          {
            "text": "@vmoe/node-utils",
            "_index": "tw_m_nodejs_info",
            "_type": "doc",
            "_id": "643ea9b1d6313d2e6f970df7",
            "_score": 1,
            "_source": {
              "_npmUser": {
                "email": "hi@viki.moe",
                "name": "vikiboss"
              },
              "ecosystem": "NPM",
              "name": "@vmoe/node-utils",
              "time": "2023-04-18T12:33:16.765Z",
              "version": "1.3.0"
            }
          },
          {
            "text": "vm",
            "_index": "tw_m_pypi_info",
            "_type": "doc",
            "_id": "60b530fcc531d22e58c4256b",
            "_score": 1,
            "_source": {
              "download_time": "2021-05-20",
              "ecosystem": "PyPI",
              "name": "vm",
              "pack_name_detail": "vm-2.0.20.tar.gz",
              "type": "tencent",
              "version": "2.0.20"
            }
          }
        ]
      }
    ]
  }
}

match查询语法

GET /tw_m_nodejs_info*/_search
{
  "query": {
      "term":{
        "name":"vm"
      }

  },
  "size":10
}

match响应

  "took": 268,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 114,
    "max_score": 12.621328,
    "hits": [
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db46f1",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "diegorbaquero@gmail.com",
            "name": "diegorbaquero"
          },
          "ecosystem": "NPM",
          "name": "vm",
          "time": "2016-04-15T15:44:12.742Z",
          "version": "0.0.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db46f2",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "diegorbaquero@gmail.com",
            "name": "diegorbaquero"
          },
          "ecosystem": "NPM",
          "name": "vm",
          "time": "2016-04-16T05:22:11.419Z",
          "version": "0.1.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48ad",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2015-02-12T15:20:12.844Z",
          "version": "0.2.2"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48b2",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2016-03-16T17:05:53.638Z",
          "version": "2.0.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48b4",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2016-06-20T22:27:16.874Z",
          "version": "3.0.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48b6",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2016-09-03T20:35:58.977Z",
          "version": "3.1.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48b7",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2017-02-10T22:47:31.707Z",
          "version": "3.2.0"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48c0",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2017-03-30T16:30:43.956Z",
          "version": "3.4.6"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48c2",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2017-10-03T23:46:09.512Z",
          "version": "3.5.1"
        }
      },
      {
        "_index": "tw_m_nodejs_info",
        "_type": "doc",
        "_id": "611271e46e3a1698a1db48c8",
        "_score": 12.621328,
        "_source": {
          "_npmUser": {
            "email": "patrik@patriksimek.cz",
            "name": "patriksimek"
          },
          "ecosystem": "NPM",
          "name": "vm2",
          "time": "2018-10-17T21:38:04.025Z",
          "version": "3.6.4"
        }
      }
    ]
  }
}