簡體   English   中英

如何在 ElasticSearch 中對價格字符串進行排序?

[英]How can I sort price string in ElasticSearch?

在我的示例中,我嘗試排序,但沒有成功。 我的問題是因為我的價格是字符串,價格就是這樣 => 1.300,00。 當我對字符串價格進行排序時,我以它為例。 0,00 | 1,00 | 1.000,00 | 2,00。 我想以 double 格式進行排序或類似的格式。 我怎樣才能做到這一點 ? 輸出

在彈性搜索中將Price作為關鍵字保留不是一個好主意,最好的方法是將price映射為彈性搜索中的scaled float ,如下所示:

新映射:

PUT [index_name]/_mapping
{
  "properties": {
    "price2": {
      "type": "scaled_float",
        "scaling_factor": 100
    }
  }
}

要解決您的問題,您可以添加新映射並將您的值從string轉換為numeric

按查詢更新:

POST [index_name]/_update_by_query
{
    "query": {
        "match_all": {}
    }, 
    "script": {
       "source": "ctx._source['price2'] = ctx._source['price'].replace(',','')"
    }
}

此查詢會將您的keyword值轉換為string並將其映射到名為price2另一個字段中,然后您需要有一個ingest pipeline來執行對新條目的處理:

攝取管道:

POST _ingest/pipeline/_simulate
{
  "pipeline": {
    "processors": [
      {
        "script": {
          "description": "Extract 'tags' from 'env' field",
          "lang": "painless",
          "source": "ctx['price2'] = ctx['price'].replace(',','')"
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "price": "5,000.00"
      }
    }
  ]
}

您需要刪除_simulate並將此ingest pipeline添加到您的索引中。

我的代碼

我怎樣才能得到這個價格值?

暫無
暫無

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

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