gpt4 book ai didi

php - Elasticsearch仅按字母排序而不按数字排序

转载 作者:行者123 更新时间:2023-12-02 23:01:34 25 4
gpt4 key购买 nike

我在使用PHP排序时遇到问题,这是我的映射:

{
"jdbc": {
"mappings": {
"jdbc": {
"properties": {
"admitted_date": {
"type": "date",
"format": "dateOptionalTime"
},
"et_tax": {
"type": "string"
},
"jt_tax": {
"type": "string"
},
"loc_cityname": {
"type": "string"
},
"location_countryname": {
"type": "string"
},
"location_primary": {
"type": "string"
},
"pd_firstName": {
"type": "string"
}
}
}
}
}
}
当我使用按结果对结果进行排序时,它将使用字母数字顺序对结果进行排序,它将首先加载数字形式的结果。我需要仅以字母开头来排序结果。现在它的命令是这样的:

http://localhost:9200/jdbc/_search?pretty=true&sort=pd_lawFirmName:asc

  1. BM&A
  2. Gomez-Acebo & Pombo
  3. Addleshaw Goddard

如何排序这样的结果?
  1. Addleshaw Goddard
  2. BM&A
  3. Gomez-Acebo & Pombo

这是我用于索引的查询
{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://localhost:3306/dbname",
"user" : "user",
"password" : "pass",
"sql" : "SQL QUERY",
"poll" : "24h",
"strategy" : "simple",
"scale" : 0,
"autocommit" : true,
"bulk_size" : 5000,
"max_bulk_requests" : 30,
"bulk_flush_interval" : "5s",
"fetchsize" : 100,
"max_rows" : 149669,
"max_retries" : 3,
"max_retries_wait" : "10s",
"locale" : "in",
"digesting" : true,
"mappings": {
"sorting": {
"properties": {
"pd_lawFirmName": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
}

最佳答案

之所以这样,是因为Elasticsearch将使用默认分析器standard标记文本。例如,McDermott Will Amery的索引如下:

              "amery",
"mcdermott",
"will"

如果您想这样排序,我建议以如下方式更改 pd_lawFirmName的映射:
  "pd_lawFirmName": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}

并按 raw子字段排序:
http://localhost:9200/jdbc/_search?pretty=true&sort=pd_lawFirmName.raw:asc

关于php - Elasticsearch仅按字母排序而不按数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com