簡體   English   中英

彈性搜索以一半的值檢索結果

[英]Elastic search retrieving results with half the value

我正在嘗試檢查 client_id 是否已存在於索引中。 但問題是 ES 仍然檢索完整的 ID,即使我給出了一半的 ID。 這是映射。

'mappings': {
            'properties': {
                'client_id': {'index': 'true','type': 'keyword'},
                'client_name': {'index': 'true', 'type': 'keyword'},
                'data_index_server': {'type': 'ip'},
                'data_file_node_path': {'index': 'true', 'type': 'keyword'},
            }

如果我有這樣的記錄

{
  "_index": "client_index",
  "_type": "_doc",
  "_id": "wYlkrYMB_q_jkYaCv6pU",
  "_version": 1,
  "_score": 1,
  "_source": {
    "doc": {
      "client_id": "0935be6b-61fe-4ec4-80c8-5c5ee8384378",
      "client_name": "citi",
      "data_file_node_path": " ",
      "data_index_server": " "
    }
  },
  "fields": {
    "doc.client_id": [
      "0935be6b-61fe-4ec4-80c8-5c5ee8384378"
    ],
    "doc.client_name": [
      "sample_name"
    ],
    "doc.data_index_server": [
      " "
    ],
    "doc.client_name.keyword": [
      "citi"
    ],
    "doc.data_file_node_path.keyword": [
      " "
    ],
    "doc.client_id.keyword": [
      "0935be6b-61fe-4ec4-80c8-5c5ee8384378"
    ],
    "doc.data_index_server.keyword": [
      " "
    ],
    "doc.data_file_node_path": [
      " "
    ]
  }
}

我的搜索請求是這樣的。 如果我正在使用 ID 的某些部分並對其進行搜索。 我預計點擊率將為零

POST /client_index/_search

    {
      "query": {
          "match": {
              "doc.client_id":"0935be6b-61fe-4ec4-80c8" ,
          }
      }
    }

我已經關注了這個 url: How to make elastic search only match full field 將字段類型更改為關鍵字,並在 true 和 false 之間切換索引,但沒有結果

我認為您混淆了一些東西,在映射中您只顯示了四個屬性,它們是簡單的字段,而在搜索響應中,它在類型為objectfields下有其他字段。

您沒看錯, keyword字段未被分析,在這些字段上您將僅獲得完整字段值的結果。

您應該嘗試將您的client-id定義為帶有示例字段的新索引中的關鍵字字段,然后搜索該索引以查看它的實際效果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM