### Elasticsearch Version

8.6.0

### Installed Plugins

_No response_

### Java Version

_bundled_ (Elastic Cloud)

### OS Version

N/A (Elastic Cloud)

### Problem Description

The Elasticsearch's JSON Processor is not producing errors when dealing with texts that starts with integers (in general, strings that match the regular expression `/\d+(\s+.*)?/`). In these cases, instead of producing errors, the JSON Processor parses as a integer number the first number encountered. Some examples:

| INPUT  | OUTPUT |
| ------------- | ------------- |
| `"0"`    | `0` |
| `"123 foo"`  | `123`  |
| `"45 this is {\"a\": \"json\"}"`  | `45` |


### Steps to Reproduce

To reproduce the bug we can create a pipeline that only contains the JSON-Processor:

```json
PUT _ingest/pipeline/test-json
{
  "processors": [
    {
      "json": {
        "field": "message",
        "target_field": "test"
      }
    }
  ]
}
```

And simulate the result with the following body (in the table other examples are shown):

```json
GET _ingest/pipeline/test-json/_simulate
{
  "docs": [
    {
      "_source": {
        "message":"0"
      }
    }
  ]
}
```
The result is the following one:

```json
{
  "docs": [
    {
      "doc": {
        "_index": "_index",
        "_id": "_id",
        "_version": "-3",
        "_source": {
          "message": "0",
          "test": 0
        },
        "_ingest": {
          "timestamp": "2023-01-13T08:31:49.758255214Z"
        }
      }
    }
  ]
```

Note that `test` (i.e., the `target_field`) contains an integer and the JSON-Processor did not produced an error. This behavior is unexpected and can lead to documents to not be indexed because `target_field` is of type long instead of Object.



### Logs (if relevant)

_No response_
modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/JsonProcessorFactoryTests.java
ElasticsearchParseException.class,
            () -> FACTORY.create(null, processorTag, null, config)
        );
        assertThat(exception.getMessage(), equalTo("[field] required property is missing"));
    }
    public void testCreateWithBothTargetFieldAndAddToRoot() throws Exception {
        String randomField = randomAlphaOfLength(10);
        String randomTargetField = randomAlphaOfLength(5);
        Map<String, Object> config = new HashMap<>();
        config.put("field", randomField);
        config.put("target_field", randomTargetField);
        config.put("add_to_root", true);
        ElasticsearchException exception = expectThrows(
            ElasticsearchParseException.class,
            () -> FACTORY.create(null, randomAlphaOfLength(10), null, config)
        );
        assertThat(exception.getMessage(), equalTo("[target_field] Cannot set a target field while also setting `add_to_root` to true"));
    }
    public void testReplaceMergeStrategy() throws Exception {
        JsonProcessor jsonProcessor = getJsonProcessorWithMergeStrategy(null, true);
        assertThat(jsonProcessor.getAddToRootConflictStrategy(), equalTo(JsonProcessor.ConflictStrategy.REPLACE));
        jsonProcessor = getJsonProcessorWithMergeStrategy("replace", true);
        assertThat(jsonProcessor.getAddToRootConflictStrategy(), equalTo(JsonProcessor.ConflictStrategy.REPLACE));
    }
    public void testRecursiveMergeStrategy() throws Exception {
        JsonProcessor jsonProcessor = getJsonProcessorWithMergeStrategy("merge", true);
        assertThat(jsonProcessor.getAddToRootConflictStrategy(), equalTo(JsonProcessor.ConflictStrategy.MERGE));
    }
    public void testMergeStrategyWithoutAddToRoot() throws Exception {
        ElasticsearchException exception = expectThrows(