Dou*_*los 11 range filter elasticsearch
我试图按范围过滤弹性搜索中的_id字段(索引未启用).可能吗?如果是这样,怎么办?我在弹性搜索文档中读到,我们可以使用'id'来查询_id和类型,但我看不出如何使用范围过滤器.(我不想在_id上启用索引).
{
"from": 0,
"size": 20,
"query": {
"match_all": {}
},
"filter": {
"range": {
"_id": {
"gt": "51f7b6b7710c42b136027581"
}
}
},
"sort": {
"pubdate": {
"order": "desc"
}
}
}
Run Code Online (Sandbox Code Playgroud)
也许有点晚了,但我尝试回答,也许答案对你仍然有用。
看了同事的评论,我认为可以提炼出两个主要观点:
因此,我编写了一个示例来检查解决方案 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)
Run Code Online (Sandbox Code Playgroud)
为字段建立索引后id,您可以根据需要进行过滤。range过滤器就是其中之一
elasticsearch_query = {
"query": {
"filtered": {
"filter": {
"range": {
"id": {
"gte" : 3,
"lt" : 5
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此笔记本中看到一个工作示例
| 归档时间: |
|
| 查看次数: |
2765 次 |
| 最近记录: |