|
|
@@ -24,22 +24,22 @@ interface ElasticsearchOptions {
|
|
|
clientOptions?: ClientOptions;
|
|
|
indexPrefix?: string;
|
|
|
indexSettings?: object;
|
|
|
- indexMappingProperties?: {
|
|
|
- [indexName: string]: object;
|
|
|
+ indexMappingProperties?: {
|
|
|
+ [indexName: string]: object;
|
|
|
};
|
|
|
batchSize?: number;
|
|
|
searchConfig?: SearchConfig;
|
|
|
- customProductMappings?: {
|
|
|
- [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector]>;
|
|
|
+ customProductMappings?: {
|
|
|
+ [fieldName: string]: CustomMapping<[Product, ProductVariant[], LanguageCode, Injector]>;
|
|
|
};
|
|
|
- customProductVariantMappings?: {
|
|
|
- [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector]>;
|
|
|
+ customProductVariantMappings?: {
|
|
|
+ [fieldName: string]: CustomMapping<[ProductVariant, LanguageCode, Injector]>;
|
|
|
};
|
|
|
bufferUpdates?: boolean;
|
|
|
hydrateProductRelations?: Array<EntityRelationPaths<Product>>;
|
|
|
hydrateProductVariantRelations?: Array<EntityRelationPaths<ProductVariant>>;
|
|
|
- extendSearchInputType?: {
|
|
|
- [name: string]: PrimitiveTypeVariations<GraphQlPrimitive>;
|
|
|
+ extendSearchInputType?: {
|
|
|
+ [name: string]: PrimitiveTypeVariations<GraphQlPrimitive>;
|
|
|
};
|
|
|
extendSearchSortType?: string[];
|
|
|
}
|
|
|
@@ -71,9 +71,9 @@ Interval in milliseconds between attempts to connect to the ElasticSearch server
|
|
|
|
|
|
<MemberInfo kind="property" type={`ClientOptions`} />
|
|
|
|
|
|
-Options to pass directly to the
|
|
|
-[Elasticsearch Node.js client](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html). For example, to
|
|
|
-set authentication or other more advanced options.
|
|
|
+Options to pass directly to the
|
|
|
+[Elasticsearch Node.js client](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html). For example, to
|
|
|
+set authentication or other more advanced options.
|
|
|
Note that if the `node` or `nodes` option is specified, it will override the values provided in the `host` and `port` options.
|
|
|
### indexPrefix
|
|
|
|
|
|
@@ -84,7 +84,7 @@ Prefix for the indices created by the plugin.
|
|
|
|
|
|
<MemberInfo kind="property" type={`object`} default="{}" since="1.2.0" />
|
|
|
|
|
|
-[These options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html#index-modules-settings)
|
|
|
+[These options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html#index-modules-settings)
|
|
|
are directly passed to index settings. To apply some settings indices will be recreated.
|
|
|
|
|
|
*Example*
|
|
|
@@ -115,10 +115,10 @@ A more complete example can be found in the discussion thread
|
|
|
[How to make elastic plugin to search by substring with stemming](https://github.com/vendure-ecommerce/vendure/discussions/1066).
|
|
|
### indexMappingProperties
|
|
|
|
|
|
-<MemberInfo kind="property" type={`{ [indexName: string]: object; }`} default="{}" since="1.2.0" />
|
|
|
+<MemberInfo kind="property" type={`{
[indexName: string]: object;
}`} default="{}" since="1.2.0" />
|
|
|
|
|
|
-This option allow to redefine or define new properties in mapping. More about elastic
|
|
|
-[mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
|
|
|
+This option allow to redefine or define new properties in mapping. More about elastic
|
|
|
+[mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html)
|
|
|
After changing this option indices will be recreated.
|
|
|
|
|
|
*Example*
|
|
|
@@ -169,21 +169,21 @@ Batch size for bulk operations (e.g. when rebuilding the indices).
|
|
|
Configuration of the internal Elasticsearch query.
|
|
|
### customProductMappings
|
|
|
|
|
|
-<MemberInfo kind="property" type={`{ [fieldName: string]: CustomMapping<[<a href='/reference/typescript-api/entities/product#product'>Product</a>, <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>[], <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>]>; }`} />
|
|
|
-
|
|
|
-Custom mappings may be defined which will add the defined data to the
|
|
|
-Elasticsearch index and expose that data via the SearchResult GraphQL type,
|
|
|
-adding a new `customMappings`, `customProductMappings` & `customProductVariantMappings` fields.
|
|
|
-
|
|
|
-The `graphQlType` property may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
|
|
|
-versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
|
|
|
-
|
|
|
-The `public` (default = `true`) property is used to reveal or hide the property in the GraphQL API schema.
|
|
|
-If this property is set to `false` it's not accessible in the `customMappings` field but it's still getting
|
|
|
-parsed to the elasticsearch index.
|
|
|
-
|
|
|
-This config option defines custom mappings which are accessible when the "groupByProduct"
|
|
|
-input options is set to `true`. In addition, custom variant mappings can be accessed by using
|
|
|
+<MemberInfo kind="property" type={`{
[fieldName: string]: CustomMapping<[<a href='/reference/typescript-api/entities/product#product'>Product</a>, <a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>[], <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>]>;
}`} />
|
|
|
+
|
|
|
+Custom mappings may be defined which will add the defined data to the
|
|
|
+Elasticsearch index and expose that data via the SearchResult GraphQL type,
|
|
|
+adding a new `customMappings`, `customProductMappings` & `customProductVariantMappings` fields.
|
|
|
+
|
|
|
+The `graphQlType` property may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
|
|
|
+versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
|
|
|
+
|
|
|
+The `public` (default = `true`) property is used to reveal or hide the property in the GraphQL API schema.
|
|
|
+If this property is set to `false` it's not accessible in the `customMappings` field but it's still getting
|
|
|
+parsed to the elasticsearch index.
|
|
|
+
|
|
|
+This config option defines custom mappings which are accessible when the "groupByProduct"
|
|
|
+input options is set to `true`. In addition, custom variant mappings can be accessed by using
|
|
|
the `customProductVariantMappings` field, which is always available.
|
|
|
|
|
|
*Example*
|
|
|
@@ -232,10 +232,10 @@ query SearchProducts($input: SearchInput!) {
|
|
|
```
|
|
|
### customProductVariantMappings
|
|
|
|
|
|
-<MemberInfo kind="property" type={`{ [fieldName: string]: CustomMapping<[<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>, <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>]>; }`} />
|
|
|
+<MemberInfo kind="property" type={`{
[fieldName: string]: CustomMapping<[<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>, <a href='/reference/typescript-api/common/language-code#languagecode'>LanguageCode</a>, <a href='/reference/typescript-api/common/injector#injector'>Injector</a>]>;
}`} />
|
|
|
|
|
|
-This config option defines custom mappings which are accessible when the "groupByProduct"
|
|
|
-input options is set to `false`. In addition, custom product mappings can be accessed by using
|
|
|
+This config option defines custom mappings which are accessible when the "groupByProduct"
|
|
|
+input options is set to `false`. In addition, custom product mappings can be accessed by using
|
|
|
the `customProductMappings` field, which is always available.
|
|
|
|
|
|
*Example*
|
|
|
@@ -263,20 +263,20 @@ query SearchProducts($input: SearchInput!) {
|
|
|
|
|
|
<MemberInfo kind="property" type={`boolean`} default="false" since="1.3.0" />
|
|
|
|
|
|
-If set to `true`, updates to Products, ProductVariants and Collections will not immediately
|
|
|
-trigger an update to the search index. Instead, all these changes will be buffered and will
|
|
|
-only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API.
|
|
|
-
|
|
|
-This is very useful for installations with a large number of ProductVariants and/or
|
|
|
-Collections, as the buffering allows better control over when these expensive jobs are run,
|
|
|
-and also performs optimizations to minimize the amount of work that needs to be performed by
|
|
|
+If set to `true`, updates to Products, ProductVariants and Collections will not immediately
|
|
|
+trigger an update to the search index. Instead, all these changes will be buffered and will
|
|
|
+only be run via a call to the `runPendingSearchIndexUpdates` mutation in the Admin API.
|
|
|
+
|
|
|
+This is very useful for installations with a large number of ProductVariants and/or
|
|
|
+Collections, as the buffering allows better control over when these expensive jobs are run,
|
|
|
+and also performs optimizations to minimize the amount of work that needs to be performed by
|
|
|
the worker.
|
|
|
### hydrateProductRelations
|
|
|
|
|
|
<MemberInfo kind="property" type={`Array<<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a><<a href='/reference/typescript-api/entities/product#product'>Product</a>>>`} default="[]" since="1.3.0" />
|
|
|
|
|
|
-Additional product relations that will be fetched from DB while reindexing. This can be used
|
|
|
-in combination with `customProductMappings` to ensure that the required relations are joined
|
|
|
+Additional product relations that will be fetched from DB while reindexing. This can be used
|
|
|
+in combination with `customProductMappings` to ensure that the required relations are joined
|
|
|
before the `product` object is passed to the `valueFn`.
|
|
|
|
|
|
*Example*
|
|
|
@@ -298,14 +298,14 @@ before the `product` object is passed to the `valueFn`.
|
|
|
|
|
|
<MemberInfo kind="property" type={`Array<<a href='/reference/typescript-api/common/entity-relation-paths#entityrelationpaths'>EntityRelationPaths</a><<a href='/reference/typescript-api/entities/product-variant#productvariant'>ProductVariant</a>>>`} default="[]" since="1.3.0" />
|
|
|
|
|
|
-Additional variant relations that will be fetched from DB while reindexing. See
|
|
|
+Additional variant relations that will be fetched from DB while reindexing. See
|
|
|
`hydrateProductRelations` for more explanation and a usage example.
|
|
|
### extendSearchInputType
|
|
|
|
|
|
-<MemberInfo kind="property" type={`{ [name: string]: PrimitiveTypeVariations<GraphQlPrimitive>; }`} default="{}" since="1.3.0" />
|
|
|
+<MemberInfo kind="property" type={`{
[name: string]: PrimitiveTypeVariations<GraphQlPrimitive>;
}`} default="{}" since="1.3.0" />
|
|
|
|
|
|
-Allows the `SearchInput` type to be extended with new input fields. This allows arbitrary
|
|
|
-data to be passed in, which can then be used e.g. in the `mapQuery()` function or
|
|
|
+Allows the `SearchInput` type to be extended with new input fields. This allows arbitrary
|
|
|
+data to be passed in, which can then be used e.g. in the `mapQuery()` function or
|
|
|
custom `scriptFields` functions.
|
|
|
|
|
|
*Example*
|
|
|
@@ -339,7 +339,7 @@ query {
|
|
|
|
|
|
<MemberInfo kind="property" type={`string[]`} default="[]" since="1.4.0" />
|
|
|
|
|
|
-Adds a list of sort parameters. This is mostly important to make the
|
|
|
+Adds a list of sort parameters. This is mostly important to make the
|
|
|
correct sort order values available inside `input` parameter of the `mapSort` option.
|
|
|
|
|
|
*Example*
|
|
|
@@ -376,12 +376,12 @@ interface SearchConfig {
|
|
|
multiMatchType?: 'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix';
|
|
|
boostFields?: BoostFieldsConfig;
|
|
|
priceRangeBucketInterval?: number;
|
|
|
- mapQuery?: (
|
|
|
- query: any,
|
|
|
- input: ElasticSearchInput,
|
|
|
- searchConfig: DeepRequired<SearchConfig>,
|
|
|
- channelId: ID,
|
|
|
- enabledOnly: boolean,
|
|
|
+ mapQuery?: (
|
|
|
+ query: any,
|
|
|
+ input: ElasticSearchInput,
|
|
|
+ searchConfig: DeepRequired<SearchConfig>,
|
|
|
+ channelId: ID,
|
|
|
+ enabledOnly: boolean,
|
|
|
) => any;
|
|
|
scriptFields?: { [fieldName: string]: CustomScriptMapping<[ElasticSearchInput]> };
|
|
|
mapSort?: (sort: ElasticSearchSortInput, input: ElasticSearchInput) => ElasticSearchSortInput;
|
|
|
@@ -394,29 +394,29 @@ interface SearchConfig {
|
|
|
|
|
|
<MemberInfo kind="property" type={`number`} default="50" />
|
|
|
|
|
|
-The maximum number of FacetValues to return from the search query. Internally, this
|
|
|
+The maximum number of FacetValues to return from the search query. Internally, this
|
|
|
value sets the "size" property of an Elasticsearch aggregation.
|
|
|
### collectionMaxSize
|
|
|
|
|
|
<MemberInfo kind="property" type={`number`} default="50" since="1.1.0" />
|
|
|
|
|
|
-The maximum number of Collections to return from the search query. Internally, this
|
|
|
+The maximum number of Collections to return from the search query. Internally, this
|
|
|
value sets the "size" property of an Elasticsearch aggregation.
|
|
|
### totalItemsMaxSize
|
|
|
|
|
|
<MemberInfo kind="property" type={`number | boolean`} default="10000" since="1.2.0" />
|
|
|
|
|
|
-The maximum number of totalItems to return from the search query. Internally, this
|
|
|
-value sets the "track_total_hits" property of an Elasticsearch query.
|
|
|
-If this parameter is set to "True", accurate count of totalItems will be returned.
|
|
|
-If this parameter is set to "False", totalItems will be returned as 0.
|
|
|
+The maximum number of totalItems to return from the search query. Internally, this
|
|
|
+value sets the "track_total_hits" property of an Elasticsearch query.
|
|
|
+If this parameter is set to "True", accurate count of totalItems will be returned.
|
|
|
+If this parameter is set to "False", totalItems will be returned as 0.
|
|
|
If this parameter is set to integer, accurate count of totalItems will be returned not bigger than integer.
|
|
|
### multiMatchType
|
|
|
|
|
|
<MemberInfo kind="property" type={`'best_fields' | 'most_fields' | 'cross_fields' | 'phrase' | 'phrase_prefix' | 'bool_prefix'`} default="'best_fields'" />
|
|
|
|
|
|
-Defines the
|
|
|
-[multi match type](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#multi-match-types)
|
|
|
+Defines the
|
|
|
+[multi match type](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#multi-match-types)
|
|
|
used when matching against a search term.
|
|
|
### boostFields
|
|
|
|
|
|
@@ -427,43 +427,43 @@ Set custom boost values for particular fields when matching against a search ter
|
|
|
|
|
|
<MemberInfo kind="property" type={`number`} />
|
|
|
|
|
|
-The interval used to group search results into buckets according to price range. For example, setting this to
|
|
|
-`2000` will group into buckets every $20.00:
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "data": {
|
|
|
- "search": {
|
|
|
- "totalItems": 32,
|
|
|
- "priceRange": {
|
|
|
- "buckets": [
|
|
|
- {
|
|
|
- "to": 2000,
|
|
|
- "count": 21
|
|
|
- },
|
|
|
- {
|
|
|
- "to": 4000,
|
|
|
- "count": 7
|
|
|
- },
|
|
|
- {
|
|
|
- "to": 6000,
|
|
|
- "count": 3
|
|
|
- },
|
|
|
- {
|
|
|
- "to": 12000,
|
|
|
- "count": 1
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+The interval used to group search results into buckets according to price range. For example, setting this to
|
|
|
+`2000` will group into buckets every $20.00:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "data": {
|
|
|
+ "search": {
|
|
|
+ "totalItems": 32,
|
|
|
+ "priceRange": {
|
|
|
+ "buckets": [
|
|
|
+ {
|
|
|
+ "to": 2000,
|
|
|
+ "count": 21
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "to": 4000,
|
|
|
+ "count": 7
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "to": 6000,
|
|
|
+ "count": 3
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "to": 12000,
|
|
|
+ "count": 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
```
|
|
|
### mapQuery
|
|
|
|
|
|
-<MemberInfo kind="property" type={`( query: any, input: ElasticSearchInput, searchConfig: DeepRequired<<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>>, channelId: <a href='/reference/typescript-api/common/id#id'>ID</a>, enabledOnly: boolean, ) => any`} />
|
|
|
+<MemberInfo kind="property" type={`(
query: any,
input: ElasticSearchInput,
searchConfig: DeepRequired<<a href='/reference/core-plugins/elasticsearch-plugin/elasticsearch-options#searchconfig'>SearchConfig</a>>,
channelId: <a href='/reference/typescript-api/common/id#id'>ID</a>,
enabledOnly: boolean,
) => any`} />
|
|
|
|
|
|
-This config option allows the the modification of the whole (already built) search query. This allows
|
|
|
+This config option allows the the modification of the whole (already built) search query. This allows
|
|
|
for e.g. wildcard / fuzzy searches on the index.
|
|
|
|
|
|
*Example*
|
|
|
@@ -502,17 +502,17 @@ mapQuery: (query, input, searchConfig, channelId, enabledOnly){
|
|
|
|
|
|
<MemberInfo kind="property" type={`{ [fieldName: string]: CustomScriptMapping<[ElasticSearchInput]> }`} since="1.3.0" />
|
|
|
|
|
|
-Sets `script_fields` inside the elasticsearch body which allows returning a script evaluation for each hit.
|
|
|
-
|
|
|
-The script field definition consists of three properties:
|
|
|
-
|
|
|
-* `graphQlType`: This is the type that will be returned when this script field is queried
|
|
|
-via the GraphQL API. It may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
|
|
|
-versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
|
|
|
-* `context`: determines whether this script field is available when grouping by product. Can be
|
|
|
-`product`, `variant` or `both`.
|
|
|
-* `scriptFn`: This is the function to run on each hit. Should return an object with a `script` property,
|
|
|
-as covered in the
|
|
|
+Sets `script_fields` inside the elasticsearch body which allows returning a script evaluation for each hit.
|
|
|
+
|
|
|
+The script field definition consists of three properties:
|
|
|
+
|
|
|
+* `graphQlType`: This is the type that will be returned when this script field is queried
|
|
|
+via the GraphQL API. It may be one of `String`, `Int`, `Float`, `Boolean`, `ID` or list
|
|
|
+versions thereof (`[String!]` etc) and can be appended with a `!` to indicate non-nullable fields.
|
|
|
+* `context`: determines whether this script field is available when grouping by product. Can be
|
|
|
+`product`, `variant` or `both`.
|
|
|
+* `scriptFn`: This is the function to run on each hit. Should return an object with a `script` property,
|
|
|
+as covered in the
|
|
|
[Elasticsearch script fields docs](https://www.elastic.co/guide/en/elasticsearch/reference/7.15/search-fields.html#script-fields)
|
|
|
|
|
|
*Example*
|
|
|
@@ -563,10 +563,10 @@ searchConfig: {
|
|
|
|
|
|
<MemberInfo kind="property" type={`(sort: ElasticSearchSortInput, input: ElasticSearchInput) => ElasticSearchSortInput`} default="{}" since="1.4.0" />
|
|
|
|
|
|
-Allows extending the `sort` input of the elasticsearch body as covered in
|
|
|
-[Elasticsearch sort docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html)
|
|
|
-
|
|
|
-The `sort` input parameter contains the ElasticSearchSortInput generated for the default sort parameters "name" and "price".
|
|
|
+Allows extending the `sort` input of the elasticsearch body as covered in
|
|
|
+[Elasticsearch sort docs](https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-search-results.html)
|
|
|
+
|
|
|
+The `sort` input parameter contains the ElasticSearchSortInput generated for the default sort parameters "name" and "price".
|
|
|
If neither of those are applied it will be empty.
|
|
|
|
|
|
*Example*
|
|
|
@@ -647,9 +647,9 @@ searchConfig: {
|
|
|
|
|
|
<GenerationInfo sourceFile="packages/elasticsearch-plugin/src/options.ts" sourceLine="670" packageName="@vendure/elasticsearch-plugin" />
|
|
|
|
|
|
-Configuration for [boosting](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#field-boost)
|
|
|
-the scores of given fields when performing a search against a term.
|
|
|
-
|
|
|
+Configuration for [boosting](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html#field-boost)
|
|
|
+the scores of given fields when performing a search against a term.
|
|
|
+
|
|
|
Boosting a field acts as a score multiplier for matches against that field.
|
|
|
|
|
|
```ts title="Signature"
|