mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
The addition of the optional flag to disable leading wildcards inadvertently broke exists queries, which are accomplished in kuery with the fieldName:* syntax.
This commit is contained in:
parent
af49683bed
commit
372412361d
2 changed files with 30 additions and 3 deletions
|
@ -62,6 +62,22 @@ describe('kuery node types', function () {
|
|||
|
||||
});
|
||||
|
||||
describe('hasLeadingWildcard', function () {
|
||||
it('should determine whether a wildcard node contains a leading wildcard', function () {
|
||||
const node = wildcard.buildNode('foo*bar');
|
||||
expect(wildcard.hasLeadingWildcard(node)).to.be(false);
|
||||
|
||||
const leadingWildcardNode = wildcard.buildNode('*foobar');
|
||||
expect(wildcard.hasLeadingWildcard(leadingWildcardNode)).to.be(true);
|
||||
});
|
||||
|
||||
// Lone wildcards become exists queries, so we aren't worried about their performance
|
||||
it('should not consider a lone wildcard to be a leading wildcard', function () {
|
||||
const leadingWildcardNode = wildcard.buildNode('*');
|
||||
expect(wildcard.hasLeadingWildcard(leadingWildcardNode)).to.be(false);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
|
|
@ -25,7 +25,10 @@ export function buildNode(value) {
|
|||
|
||||
export function test(node, string) {
|
||||
const { value } = node;
|
||||
const regex = value.split(wildcardSymbol).map(escapeRegExp).join('.*');
|
||||
const regex = value
|
||||
.split(wildcardSymbol)
|
||||
.map(escapeRegExp)
|
||||
.join('.*');
|
||||
const regexp = new RegExp(`^${regex}$`);
|
||||
return regexp.test(string);
|
||||
}
|
||||
|
@ -37,10 +40,18 @@ export function toElasticsearchQuery(node) {
|
|||
|
||||
export function toQueryStringQuery(node) {
|
||||
const { value } = node;
|
||||
return value.split(wildcardSymbol).map(escapeQueryString).join('*');
|
||||
return value
|
||||
.split(wildcardSymbol)
|
||||
.map(escapeQueryString)
|
||||
.join('*');
|
||||
}
|
||||
|
||||
export function hasLeadingWildcard(node) {
|
||||
const { value } = node;
|
||||
return value.startsWith(wildcardSymbol);
|
||||
// A lone wildcard turns into an `exists` query, so we're only concerned with
|
||||
// leading wildcards followed by additional characters.
|
||||
return (
|
||||
value.startsWith(wildcardSymbol) &&
|
||||
value.replace(wildcardSymbol, '').length > 0
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue