Skip to content

6.3.0, 7.2.0, 8.2.0 for Azure Search & 3.3.0, 4.2.0, 5.2.0 for Elasticsearch

Choose a tag to compare

@Shazwazza Shazwazza released this 06 Oct 16:42
ff1d58f

Patch releases for the Umbraco 13, 15 and 16 lines of ExamineX for Azure Search and ExamineX for Elasticsearch. They all get the same fixes, except the Index Info one which doesn't apply to Umbraco 13.

🐛 Empty ManagedQuery values breaking the query

If you passed an empty, whitespace or stop-word-only value to ManagedQuery (or ManagedQueryNested), it could end up as an empty +() clause in the generated query:

+x__IndexType:content +() +(culture:da culture:none) +published:y

Azure Search rejects that with a 400 Bad Request (Failed to parse query string at line 1, column 24). Empty clauses are now skipped. This fix is in the shared query builder so it applies to both Azure Search and Elasticsearch. Fixes #138

🐛 Rebuilds silently losing documents

There were a few ways a rebuild could end up indexing a lot less than it should, or nothing at all, without any obvious error. Umbraco sends content to the index in batches of 10,000 and if anything in a batch threw, that entire batch was dropped.

Elasticsearch

  • A field whose name only differed by case from one already in the mapping was treated as existing when ensuring fields, but as missing when building the bulk request. That threw and the batch was lost.
  • Index names are only precise to the second, so two rebuilds within the same second would generate the same name and the second one failed with resource_already_exists_exception and did nothing.
  • If a field can't be resolved now, the live mapping is reloaded and the fields are ensured again. If it still can't be resolved, the field is logged and everything else in the batch is indexed.

Azure Search

  • Field references are cached, so if another instance changed the index the cache could go stale and a field would fail to resolve, which threw away the batch. Now the index definition is re-read and the fields are ensured again, and anything that still can't be resolved is logged instead of taking the rest of the batch with it.

🐛 Index Info showing type names instead of values

In Settings -> ExamineX -> Index Info, IncludeItemTypes, ExcludeItemTypes, IncludeFields and ExcludeFields could show something like <>z__ReadOnlyArray`1[System.String] instead of the actual list. They now show the values. This is for Umbraco 15 and 16 (Azure Search 7.2.0 / 8.2.0, Elasticsearch 4.2.0 / 5.2.0), Umbraco 13 isn't affected. Fixes #139

📦 Packages

Azure Search

Elasticsearch

If you're on Umbraco 17 or 18, these fixes are also in Azure Search 9.3.2 and 10.0.1, and Elasticsearch 7.0.1.