SOLR group by different date ranges
I have a lot of data in solr like this:
{
id: some_id
date: 2008-01-01T00:00:00Z
price: 34.20
currency: "CAD"
weight: 39.9
etc
}
I'd like to perform searches on it to find the unique set of ids, and group them by time. So sometimes I want to find the items that satisfy the search for each day, or week, or month.
The first way I tried to do this was set an fq
(field query) to the date range I want, and set a facet.field=id
to get the unique id for that range, but if I want to do this for each day I'd have to do 365(+0/+1) queries, which is quite a pain and very slow.
A solution to this was to use facet.pivot=date,id
which would break this down into each day, and then for each day give the set of ids. This is perfect for the day case! However, how do we achieve the same thing for weekly? Or monthly?
What I want is the first facet.pivot
, which is date, to be a range of values. So instead of getting this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z",
"count":923,
"pivot":[{
"field":"id",
"value":18,
"count":1},
{
"field":"id",
"value":66,
"count":1},
{
"field":"id",
"value":70,
"count":1},
]
}
...]
}
}
We get something like this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
"count":923,
"pivot":[...similar to above]
}
...]
}
}
In other words, instead of it grouping based on the value of date
, it groups based on a range/interval/etc. I've toyed around with SOLRs interval,range, etc but can't seem to get something that works.
search solr
add a comment |
I have a lot of data in solr like this:
{
id: some_id
date: 2008-01-01T00:00:00Z
price: 34.20
currency: "CAD"
weight: 39.9
etc
}
I'd like to perform searches on it to find the unique set of ids, and group them by time. So sometimes I want to find the items that satisfy the search for each day, or week, or month.
The first way I tried to do this was set an fq
(field query) to the date range I want, and set a facet.field=id
to get the unique id for that range, but if I want to do this for each day I'd have to do 365(+0/+1) queries, which is quite a pain and very slow.
A solution to this was to use facet.pivot=date,id
which would break this down into each day, and then for each day give the set of ids. This is perfect for the day case! However, how do we achieve the same thing for weekly? Or monthly?
What I want is the first facet.pivot
, which is date, to be a range of values. So instead of getting this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z",
"count":923,
"pivot":[{
"field":"id",
"value":18,
"count":1},
{
"field":"id",
"value":66,
"count":1},
{
"field":"id",
"value":70,
"count":1},
]
}
...]
}
}
We get something like this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
"count":923,
"pivot":[...similar to above]
}
...]
}
}
In other words, instead of it grouping based on the value of date
, it groups based on a range/interval/etc. I've toyed around with SOLRs interval,range, etc but can't seem to get something that works.
search solr
add a comment |
I have a lot of data in solr like this:
{
id: some_id
date: 2008-01-01T00:00:00Z
price: 34.20
currency: "CAD"
weight: 39.9
etc
}
I'd like to perform searches on it to find the unique set of ids, and group them by time. So sometimes I want to find the items that satisfy the search for each day, or week, or month.
The first way I tried to do this was set an fq
(field query) to the date range I want, and set a facet.field=id
to get the unique id for that range, but if I want to do this for each day I'd have to do 365(+0/+1) queries, which is quite a pain and very slow.
A solution to this was to use facet.pivot=date,id
which would break this down into each day, and then for each day give the set of ids. This is perfect for the day case! However, how do we achieve the same thing for weekly? Or monthly?
What I want is the first facet.pivot
, which is date, to be a range of values. So instead of getting this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z",
"count":923,
"pivot":[{
"field":"id",
"value":18,
"count":1},
{
"field":"id",
"value":66,
"count":1},
{
"field":"id",
"value":70,
"count":1},
]
}
...]
}
}
We get something like this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
"count":923,
"pivot":[...similar to above]
}
...]
}
}
In other words, instead of it grouping based on the value of date
, it groups based on a range/interval/etc. I've toyed around with SOLRs interval,range, etc but can't seem to get something that works.
search solr
I have a lot of data in solr like this:
{
id: some_id
date: 2008-01-01T00:00:00Z
price: 34.20
currency: "CAD"
weight: 39.9
etc
}
I'd like to perform searches on it to find the unique set of ids, and group them by time. So sometimes I want to find the items that satisfy the search for each day, or week, or month.
The first way I tried to do this was set an fq
(field query) to the date range I want, and set a facet.field=id
to get the unique id for that range, but if I want to do this for each day I'd have to do 365(+0/+1) queries, which is quite a pain and very slow.
A solution to this was to use facet.pivot=date,id
which would break this down into each day, and then for each day give the set of ids. This is perfect for the day case! However, how do we achieve the same thing for weekly? Or monthly?
What I want is the first facet.pivot
, which is date, to be a range of values. So instead of getting this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z",
"count":923,
"pivot":[{
"field":"id",
"value":18,
"count":1},
{
"field":"id",
"value":66,
"count":1},
{
"field":"id",
"value":70,
"count":1},
]
}
...]
}
}
We get something like this:
{
"responseHeader":{
...
},
"facet_counts":{
...
"facet_pivot":{
"date,id":[{
"field":"date",
"value":"2008-01-01T00:00:00Z TO 2008-01-31T00:00:00Z",
"count":923,
"pivot":[...similar to above]
}
...]
}
}
In other words, instead of it grouping based on the value of date
, it groups based on a range/interval/etc. I've toyed around with SOLRs interval,range, etc but can't seem to get something that works.
search solr
search solr
asked Nov 22 at 19:06
Coltin
1,85052434
1,85052434
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Please try like below to get the monthly range with the gap of week.
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
I hope this helps!
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436864%2fsolr-group-by-different-date-ranges%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Please try like below to get the monthly range with the gap of week.
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
I hope this helps!
add a comment |
Please try like below to get the monthly range with the gap of week.
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
I hope this helps!
add a comment |
Please try like below to get the monthly range with the gap of week.
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
I hope this helps!
Please try like below to get the monthly range with the gap of week.
facet.range={!tag=rdt}date&facet.range.start=NOW/DAY&facet.range.gap=+7DAY&facet.range.end=NOW/DAY +30DAY&facet=true&facet.pivot={!range=rdt}date,id
I hope this helps!
answered Nov 23 at 17:10
Aman Tandon
560221
560221
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436864%2fsolr-group-by-different-date-ranges%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown