elasticsearch - token 化程序的 Elasticsearch 排序问题

标签 elasticsearch kendo-grid

我正在使用KendoGrid,数据源来自 Elasticsearch 。当我按名称排序时, Elasticsearch 为我提供了一些出乎意料的结果。经过分析,我发现如果我按升序/降序排序, Elasticsearch 会将字符串分割成多个单词,并且在这些单词中,它正在寻找分别以较低/较高值开头的单词。例如。

Again Test for Hard bounce check
Campaign Sender Test
Test SMTP 2
Test SMTP 1
Test Campaign34
Test Campaign345
Campaign Test mergervars
Link test
Failed Test

上面列表中的第一项“硬跳检查再次测试”已分为5个字,并且由于“测试”以T开头,因此它在列表中首先显示。

但是,我不想这样排序。我想从字符串的开头开始排序。我怎么做。

我假设我必须通过 token 生成器来处理它,但不确定如何执行。请帮忙。

最佳答案

排序发生在逆索引上,最好称为字段数据缓存。此处的数据是在标记化之后。
如果您想保留搜索功能并对该字段进行排序,那么我强烈建议您使用multi fields

"title": {
    "type": "string",
    "fields": {
        "sort":   { "type": "string", "index": "not_analyzed" }
    }
}

现在,我们内部有两个字段用于标题字段。
标题字段和title.sort。
使用title.sort字段,因为它具有确切的字符串。

关于elasticsearch - token 化程序的 Elasticsearch 排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556602/

相关文章:

jquery - Kendo Grid - 如何动态添加列?

asp.net-mvc - 剑道网格分层 View : How to avoid auto open first row

json - 使用python在elasticsearch的json响应内搜索值

c# - Kendo DataSourceRequest 和 DataSourceResult 与 .Net Core

regex - 在kibana中按uri param筛选

c# - 无法使NLog从代码中以数字/整数/长整数形式发送字段

kendo-grid - 剑道与 Angular2 : How to display custom message when there are no records available in Kendo Grid

c# - Kendo UI 添加新记录

python - 检查python中的elasticsearch连接状态

java - AWS RDS 到 AWS ES