Skip to content

Commit baac41f

Browse files
Revert "Backport distance functions vectors (#39330)" (#43233)
This reverts commit e802842.
1 parent 748237e commit baac41f

File tree

25 files changed

+76
-1535
lines changed

25 files changed

+76
-1535
lines changed

docs/painless/painless-api-reference/painless-api-reference-score/index.asciidoc

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ The following specialized API is available in the Score context.
1010
==== Static Methods
1111
The following methods are directly callable without a class/instance qualifier. Note parameters denoted by a (*) are treated as read-only values.
1212

13-
* double cosineSimilarity(List *, VectorScriptDocValues.DenseVectorScriptDocValues)
14-
* double cosineSimilaritySparse(Map *, VectorScriptDocValues.SparseVectorScriptDocValues)
1513
* double decayDateExp(String *, String *, String *, double *, JodaCompatibleZonedDateTime)
1614
* double decayDateGauss(String *, String *, String *, double *, JodaCompatibleZonedDateTime)
1715
* double decayDateLinear(String *, String *, String *, double *, JodaCompatibleZonedDateTime)
@@ -21,23 +19,9 @@ The following methods are directly callable without a class/instance qualifier.
2119
* double decayNumericExp(double *, double *, double *, double *, double)
2220
* double decayNumericGauss(double *, double *, double *, double *, double)
2321
* double decayNumericLinear(double *, double *, double *, double *, double)
24-
* double dotProduct(List, VectorScriptDocValues.DenseVectorScriptDocValues)
25-
* double dotProductSparse(Map *, VectorScriptDocValues.SparseVectorScriptDocValues)
2622
* double randomScore(int *)
2723
* double randomScore(int *, String *)
2824
* double saturation(double, double)
2925
* double sigmoid(double, double, double)
3026

31-
==== Classes By Package
32-
The following classes are available grouped by their respective packages. Click on a class to view details about the available methods and fields.
33-
34-
35-
==== org.elasticsearch.index.query
36-
<<painless-api-reference-score-org-elasticsearch-index-query, Expand details for org.elasticsearch.index.query>>
37-
38-
* <<painless-api-reference-score-VectorScriptDocValues, VectorScriptDocValues>>
39-
* <<painless-api-reference-score-VectorScriptDocValues-DenseVectorScriptDocValues, VectorScriptDocValues.DenseVectorScriptDocValues>>
40-
* <<painless-api-reference-score-VectorScriptDocValues-SparseVectorScriptDocValues, VectorScriptDocValues.SparseVectorScriptDocValues>>
41-
42-
include::packages.asciidoc[]
4327

docs/painless/painless-api-reference/painless-api-reference-score/packages.asciidoc

Lines changed: 0 additions & 169 deletions
This file was deleted.

docs/reference/mapping/types/dense-vector.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ not exceed 1024. The number of dimensions can be
99
different across documents. A `dense_vector` field is
1010
a single-valued field.
1111

12-
These vectors can be used for <<vector-functions,document scoring>>.
12+
These vectors can be used for document scoring.
1313
For example, a document score can represent a distance between
1414
a given query vector and the indexed document vector.
1515

docs/reference/mapping/types/sparse-vector.asciidoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ not exceed 1024. The number of dimensions can be
99
different across documents. A `sparse_vector` field is
1010
a single-valued field.
1111

12-
These vectors can be used for <<vector-functions,document scoring>>.
12+
These vectors can be used for document scoring.
1313
For example, a document score can represent a distance between
1414
a given query vector and the indexed document vector.
1515

docs/reference/query-dsl/script-score-query.asciidoc

Lines changed: 0 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -72,122 +72,6 @@ to be the most efficient by using the internal mechanisms.
7272
--------------------------------------------------
7373
// NOTCONSOLE
7474

75-
[[vector-functions]]
76-
===== Functions for vector fields
77-
78-
experimental[]
79-
80-
These functions are used for
81-
for <<dense-vector,`dense_vector`>> and
82-
<<sparse-vector,`sparse_vector`>> fields.
83-
84-
NOTE: During vector functions' calculation, all matched documents are
85-
linearly scanned. Thus, expect the query time grow linearly
86-
with the number of matched documents. For this reason, we recommend
87-
to limit the number of matched documents with a `query` parameter.
88-
89-
For dense_vector fields, `cosineSimilarity` calculates the measure of
90-
cosine similarity between a given query vector and document vectors.
91-
92-
[source,js]
93-
--------------------------------------------------
94-
{
95-
"query": {
96-
"script_score": {
97-
"query": {
98-
"match_all": {}
99-
},
100-
"script": {
101-
"source": "cosineSimilarity(params.queryVector, doc['my_dense_vector'])",
102-
"params": {
103-
"queryVector": [4, 3.4, -0.2] <1>
104-
}
105-
}
106-
}
107-
}
108-
}
109-
--------------------------------------------------
110-
// NOTCONSOLE
111-
<1> To take advantage of the script optimizations, provide a query vector as a script parameter.
112-
113-
Similarly, for sparse_vector fields, `cosineSimilaritySparse` calculates cosine similarity
114-
between a given query vector and document vectors.
115-
116-
[source,js]
117-
--------------------------------------------------
118-
{
119-
"query": {
120-
"script_score": {
121-
"query": {
122-
"match_all": {}
123-
},
124-
"script": {
125-
"source": "cosineSimilaritySparse(params.queryVector, doc['my_sparse_vector'])",
126-
"params": {
127-
"queryVector": {"2": 0.5, "10" : 111.3, "50": -1.3, "113": 14.8, "4545": 156.0}
128-
}
129-
}
130-
}
131-
}
132-
}
133-
--------------------------------------------------
134-
// NOTCONSOLE
135-
136-
For dense_vector fields, `dotProduct` calculates the measure of
137-
dot product between a given query vector and document vectors.
138-
139-
[source,js]
140-
--------------------------------------------------
141-
{
142-
"query": {
143-
"script_score": {
144-
"query": {
145-
"match_all": {}
146-
},
147-
"script": {
148-
"source": "dotProduct(params.queryVector, doc['my_dense_vector'])",
149-
"params": {
150-
"queryVector": [4, 3.4, -0.2]
151-
}
152-
}
153-
}
154-
}
155-
}
156-
--------------------------------------------------
157-
// NOTCONSOLE
158-
159-
Similarly, for sparse_vector fields, `dotProductSparse` calculates dot product
160-
between a given query vector and document vectors.
161-
162-
[source,js]
163-
--------------------------------------------------
164-
{
165-
"query": {
166-
"script_score": {
167-
"query": {
168-
"match_all": {}
169-
},
170-
"script": {
171-
"source": "dotProductSparse(params.queryVector, doc['my_sparse_vector'])",
172-
"params": {
173-
"queryVector": {"2": 0.5, "10" : 111.3, "50": -1.3, "113": 14.8, "4545": 156.0}
174-
}
175-
}
176-
}
177-
}
178-
}
179-
--------------------------------------------------
180-
// NOTCONSOLE
181-
182-
NOTE: If a document doesn't have a value for a vector field on which
183-
a vector function is executed, 0 is returned as a result
184-
for this document.
185-
186-
NOTE: If a document's dense vector field has a number of dimensions
187-
different from the query's vector, 0 is used for missing dimensions
188-
in the calculations of vector functions.
189-
190-
19175
[[random-score-function]]
19276
===== Random score function
19377
`random_score` function generates scores that are uniformly distributed

modules/lang-painless/src/test/resources/rest-api-spec/test/painless/71_context_api.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@
1717
- match: { classes.6.methods.0.parameters.0 : java.lang.CharSequence }
1818
- match: { classes.6.methods.0.parameters.1 : int }
1919
- match: { classes.6.methods.0.parameters.2 : int }
20-
- match: { imported_methods.0.name: dotProduct }
21-
- match: { class_bindings.0.name: cosineSimilarity }
20+
- match: { imported_methods.0.name: saturation }
21+
- match: { class_bindings.0.name: decayDateExp }
2222
- match: { instance_bindings: [] }

modules/mapper-extras/build.gradle

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,4 @@
2020
esplugin {
2121
description 'Adds advanced field mappers'
2222
classname 'org.elasticsearch.index.mapper.MapperExtrasPlugin'
23-
extendedPlugins = ['lang-painless']
24-
}
25-
26-
dependencies {
27-
compileOnly project(':modules:lang-painless')
2823
}

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/DenseVectorFieldMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.elasticsearch.common.xcontent.XContentParser.Token;
3131
import org.elasticsearch.index.fielddata.IndexFieldData;
3232
import org.elasticsearch.index.query.QueryShardContext;
33-
import org.elasticsearch.index.query.VectorDVIndexFieldData;
3433
import org.elasticsearch.search.DocValueFormat;
3534

3635
import java.io.IOException;
@@ -120,7 +119,8 @@ public Query existsQuery(QueryShardContext context) {
120119

121120
@Override
122121
public IndexFieldData.Builder fielddataBuilder(String fullyQualifiedIndexName) {
123-
return new VectorDVIndexFieldData.Builder(true);
122+
throw new UnsupportedOperationException(
123+
"Field [" + name() + "] of type [" + typeName() + "] doesn't support sorting, scripting or aggregating");
124124
}
125125

126126
@Override

modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/SparseVectorFieldMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.elasticsearch.common.xcontent.XContentParser.Token;
3131
import org.elasticsearch.index.fielddata.IndexFieldData;
3232
import org.elasticsearch.index.query.QueryShardContext;
33-
import org.elasticsearch.index.query.VectorDVIndexFieldData;
3433
import org.elasticsearch.search.DocValueFormat;
3534

3635
import java.io.IOException;
@@ -120,7 +119,8 @@ public Query existsQuery(QueryShardContext context) {
120119

121120
@Override
122121
public IndexFieldData.Builder fielddataBuilder(String fullyQualifiedIndexName) {
123-
return new VectorDVIndexFieldData.Builder(false);
122+
throw new UnsupportedOperationException(
123+
"Field [" + name() + "] of type [" + typeName() + "] doesn't support sorting, scripting or aggregating");
124124
}
125125

126126
@Override

0 commit comments

Comments
 (0)