【发布时间】:2021-09-12 13:48:32
【问题描述】:
假设我有一个像这样的排序索引(弹性搜索)
GuyA;150 - 盖伊B;101 - 盖伊C;74 - 盖伊D;12
如果我插入一个新条目,可以说 GuyE;90 索引应该这样组织:
GuyA;150 - 盖伊B;101 - 盖伊;90 - 盖伊C;74 - 盖伊D;12
但如果我使用脚本(在更新后请求中)更新 GuyD 的值到 1000 索引会是:
GuyA;150 - 盖伊B;101 - 盖伊;90 - 盖伊C;74 - GuyD;1000
或
GuyD;1000 - 盖亚;150 - 盖伊B;101 - 盖伊;90 - GuyC;74
请我专门讨论排序索引:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-index-sorting.html 似乎在任何地方都找不到信息。
基本上:更新的管理方式是否与排序索引中的插入相同?我知道我有一个插入的优势,因为它会以排序的方式被索引,但是如果更新改变了顺序,我会保留它吗?
谢谢
ps:我的映射/设置:(我删除了不相关的部分)
"settings": {
"index": {
"sort.field": "Counter",
"sort.order": "desc",
......,
"mappings": {
"dynamic": "false",
"properties": {
"Type": {
"type": "keyword"
},
"Counter":{
"type":"integer"
}.....
【问题讨论】:
-
我认为这个答案应该会有所帮助:stackoverflow.com/a/67945375/4604579(提示:索引排序并不意味着您不必在搜索时指定排序子句。如果您强制合并就可以了您的单片索引到单个段,但在任何其他情况下,您也需要在搜索时指定排序)
-
@Val Thx,我已编辑问题以考虑您的回答。我有点猜测它是这样工作的。我对问题的第一部分最感兴趣。
-
除非我遗漏了一些明显的东西,否则我仍然认为其他线程可以回答您的问题。问题是您的查询没有排序子句,因此您的结果没有排序
-
Index sorting 主要是一个查询优化功能,即它以一种使查询更高效的方式存储数据,这并不意味着您的数据将始终以排序方式返回而无需指定它。
-
好的,我将删除我的问题的第二部分。这可能会令人困惑。我要问的是:更新的行为与在排序索引中插入的方式相同吗
标签: elasticsearch