Elasticsearch没有对结果进行排序

我在使用Elasticsearch查询时遇到问题。我希望能够对结果进行排序,但是elasticsearch忽略了排序标签。这是我的查询:

{

"sort": [{

"title": {"order": "desc"}

}],

"query":{

"term": { "title": "pagos" }

}

}

但是,当我删除查询部分并仅发送排序标签时,它就可以工作。谁能指出正确的方法?

我还尝试了以下查询,这是我所拥有的完整查询:

{

"sort": [{

"title": {"order": "asc"}

}],

"query":{

"bool":{

"should":[

{

"match":{

"title":{

"query":"Pagos",

"boost":9

}

}

},

{

"match":{

"description":{

"query":"Pagos",

"boost":5

}

}

},

{

"match":{

"keywords":{

"query":"Pagos",

"boost":3

}

}

},

{

"match":{

"owner":{

"query":"Pagos",

"boost":2

}

}

}

]

}

}

}

{

"settings": {

"analysis": {

"filter": {

"autocomplete_filter": {

"type": "ngram",

"min_gram": 3,

"max_gram": 15,

"token_chars": [

"letter",

"digit",

"punctuation",

"symbol"

]

}

},

"analyzer": {

"default" : {

"tokenizer" : "standard",

"filter" : ["standard", "lowercase", "asciifolding"]

},

"autocomplete": {

"type": "custom",

"tokenizer": "standard",

"filter": [

"lowercase",

"asciifolding",

"autocomplete_filter"

]

}

}

}

}

}

{

"objects": {

"properties": {

"id": { "type": "string", "index": "not_analyzed" },

"type": { "type": "string" },

"title": { "type": "string", "boost": 9, "analyzer": "autocomplete", "search_analyzer": "standard" },

"owner": { "type": "string", "boost": 2 },

"description": { "type": "string", "boost": 4 },

"keywords": { "type": "string", "boost": 1 }

}

}

}

提前致谢!

回答:

文档中的 字段是一个

字符串字段,也是一个多值字段,这意味着Elasticsearch会将字段内容拆分为令牌,并将其分别存储在索引中。您可能想按字母顺序在第一项上对

字段进行排序,然后在第二项上依此类推,依此类推,但是elasticsearch在排序时并没有此信息可供使用。

因此,您可以从以下位置更改 字段的映射:

{

"title": {

"type": "string", "boost": 9, "analyzer": "autocomplete", "search_analyzer": "standard"

}

}

变成这样的多字段映射:

{

"title": {

"type": "string", "boost": 9, "analyzer": "autocomplete", "search_analyzer":"standard",

"fields": {

"raw": {

"type": "string",

"index": "not_analyzed"

}

}

}

}

现在,基于已 字段执行搜索, 基于 字段进行排序

{

"sort": [{

"title.raw": {"order": "desc"}

}],

"query":{

"term": { "title": "pagos" }

}

}

它在这里得到了很好的解释:字符串排序和多字段

以上是 Elasticsearch没有对结果进行排序 的全部内容, 来源链接: utcz.com/qa/429559.html

回到顶部