Sai*_*Sai 6 elasticsearch elastic-map-reduce elasticsearch-plugin
我有弹性搜索索引的1702个文档,其中类别为字段之一,并且还有一个名为SequentialId的字段.
我最初提取了类别1.1的文档,它们位于文档1和文档850之间,如下所示.
**POST testucb/docs/_search
{
"size": 1702,
"query": {
"bool": {
"must": [
{"match": {
"Category": "1.1"
}}
],
"filter":[
{
"range":
{
"SequentialId":
{
"gte":1,
"lte":850
}
}
}
]
}
}
}**
Run Code Online (Sandbox Code Playgroud)
上面的查询给了我834个匹配类别1.1的文档.(我有二进制文件从结果JSON输出中解析出834个_ids.) 我现在的目标是将这些834 _ids提供给more_like这个查询作为剩余的训练集我的测试集的文档(顺序851到1702的文档是我的测试集)
我在下面用过滤器尝试了这个more_like_this查询.
POST /testucb/docs/_search
{
"size": 1702,
"fields": [
"SequentialId",
"Category",
"PRIMARY_CONTENT_EN"
],
"query": {
"more_like_this":
{
"fields": [
"PRIMARY_CONTENT_EN"
],
"like":[
<-----------834 _ids goes here ---->
],
**"filter":[
{
"range":
{
"SequentialId":
{
"gte":851,
"lte":1702**
}
}
}
],
"min_term_freq": 1,
"min_doc_freq": 1,
"max_query_terms": 15,
"min_word_len": 3,
"stop_words": [
],
"boost": 2,
"include":false
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到查询解析异常,说MLT不支持过滤器.我不知道如何将我从851到1702的sequentialid作为我的测试集提供剩余的文档.
我希望能够清楚地知道我期待完成的事情.你们可以帮助我完成我的任务吗?我是弹性搜索的新手.
Mic*_*erl 13
如果你想事先更像这个查询和过滤器,你应该使用带有filter子句的bool查询(Elasticsearchversion> 2.0)
POST /testucb/docs/_search
{
"size": 1702,
"fields": [
"SequentialId",
"Category",
"PRIMARY_CONTENT_EN"
],
"query": {
"bool": {
"must": [
{
"more_like_this": {
"fields": [
"PRIMARY_CONTENT_EN"
],
"like": [
<-----------834 _ids goes here ---->
],
"min_term_freq": 1,
"min_doc_freq": 1,
"max_query_terms": 15,
"min_word_len": 3,
"stop_words": [],
"boost": 2,
"include": false
}
}
],
"filter": {
"range": {
"SequentialId": {
"gte": 851,
"lte": 1702
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用elasticsearch的是旧版本,您应该使用过滤查询,而不是
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |