elasticsearch,range,Filter,elasticsearch,Range" /> elasticsearch,range,Filter,elasticsearch,Range" />

Filter elasticsearch中的筛选器id范围

Filter elasticsearch中的筛选器id范围,filter,elasticsearch,range,Filter,elasticsearch,Range,我正在尝试按范围过滤elasticsearch中的_id字段(未启用索引)。可能吗?若然,如何进行? 我在elasticsearch文档中读到,我们可以使用“id”按id和类型进行查询,但我看不出如何使用范围过滤器进行查询。(我不想在_id上启用索引) 也许有点晚了,但我试着回答,也许答案对你仍然有用。 看到为同事们所做的评论,我认为可以提炼出两个主要观点: Elasticsearch生成的id不能用于筛选或执行除GET o id search之外的任何操作 猜测索引自定义uid值(这就是我试图

我正在尝试按范围过滤elasticsearch中的_id字段(未启用索引)。可能吗?若然,如何进行? 我在elasticsearch文档中读到,我们可以使用“id”按id和类型进行查询,但我看不出如何使用范围过滤器进行查询。(我不想在_id上启用索引)


也许有点晚了,但我试着回答,也许答案对你仍然有用。
看到为同事们所做的评论,我认为可以提炼出两个主要观点:

  • Elasticsearch生成的id不能用于筛选或执行除GET o id search之外的任何操作
  • 猜测索引自定义uid值(这就是我试图解决问题的方法)
  • 因此,我编写了一个示例来检查解决方案2是否可行。关键部分如下:

    #cluster node to query
    es = Elasticsearch(['localhost:9200',])
    records = [
        #some custom data
    ]
    for idx,r in enumerate(records):
        _index_config = dict(index_config)
        #set Elasticsearch uid
        _index_config['_id'] = idx
        #replicate in a document field to be able to filter for
        r['id'] = idx
        kwargs['body'].append({'index' : _index_config})
        kwargs['body'].append(r)
    
    _ = es.bulk(**kwargs)
    
    id
    字段编制索引后,可以根据需要进行筛选<代码>范围过滤器就是其中之一

    elasticsearch_query = {
        "query": {
            "filtered": {
                "filter": {
                    "range": {
                        "id": {
                            "gte" : 3,
                            "lt"  : 5
                        }
                    }
                }
            }
        }
    }
    

    你可以在

    中看到一个工作示例,我认为这是不可能的。我感觉
    \u id
    被散列以快速查找,一旦你散列了一些东西,你就失去了它的所有“价值”感。您需要将id存储在文档中。您确定要存储ramsey吗?您必须为id编制索引(默认情况下不是这样),因为范围查询将文档与定义范围内具有术语的字段相匹配。您是否可以使用指定的(整数)id而不是elastic提供的默认id为文档编制索引?请您解释一下,代码中发生了什么,这对我非常有帮助。我已经看到了很多关于这个的问题,但到目前为止只找到了你的解决方案,这就是为什么我急切地想要使用它。谢谢:)@SudhanshuGaur-他正在重新索引整个索引,添加一个新属性“id”,其中包含“_id”属性的值。代码是用python编写的。
    elasticsearch_query = {
        "query": {
            "filtered": {
                "filter": {
                    "range": {
                        "id": {
                            "gte" : 3,
                            "lt"  : 5
                        }
                    }
                }
            }
        }
    }