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