Jook
Jook

Reputation: 4682

How can I query Solr to get a list with all field-names prefixed by a string?

I would like to create an output based on the field-names of my Solr index objects.

What I have are objects like this e.g.:

{
    "Id":"ID12345678",
    "GroupKey":"Beta",
    "PricePackage":5796.0,
    "PriceCoupon":5316.0,
    "PriceMin":5316.0
}

Whereby the Price* fields may vary from object to object, some might have more than three of those, some less, however they would be always prefixed with Price.

How can I query Solr to get a list with all field-names prefixed by Price?

I've looked into filters, facets but could not find any clue on how to do this, as all examples - e.g. regex facet - are in regard to the field-value, not the field-name itself. Or at least I could not adapt it to that.

Upvotes: 1

Views: 5367

Answers (1)

Benjamin P.
Benjamin P.

Reputation: 453

You can get a comma separated list of all existing field names if you query for 0 documents and use the csv response writer (wt parameter) to generate the field name list.

For example if you request /solr/collection/select?q=*:*&wt=csv you get a list of all fields. If you only want fields prefixed with Price you could also add the field list parameter (fl) to limit the fields.

So the request to /solr/collection/select?q=*:*&wt=csv&fl=Price*should return the following response:

PricePackage,PriceCoupon,PriceMin

With this solution you get all fields existing including dynamic fields.

Upvotes: 3

Related Questions