1

我是 Elasticsearch 的新手。我们有一些不同数据类型的数据要索引和检索。我们正在使用自定义“_all”字段,如下面的链接中所述

自定义“_all”字段

以下是我们的代码

用于创建索引

PUT myindex
{
  "mappings": {
    "mytype": {
      "properties": {
        "first_name": {
          "type":    "text",
          "copy_to": "contact_details" 
        },
        "mobile_number": {
          "type":    "long",
          "copy_to": "contact_details" 
        },
        "contact_details": {
          "type":    "text"
        }
      }
    }
  }
}

添加到索引

PUT myindex/mytype/1
{
  "first_name": "John",
  "mobile_number": 9988776655
}

搜索

GET myindex/_search
{
  "query": {
    "multi_match": {
      "query": "9988776655",
      "fields": [
        "contact_details"
      ],
      "fuzziness": "auto"
    }
  },
  "highlight": {
    "require_field_match": false,
    "pre_tags": [
      "<tag1>"
    ],
    "post_tags": [
      "</tag1>"
    ],
    "fields": {
      "first_name": {},
      "mobile_number": {}
    }
  }
}

使用上述查询,我​​们能够获取结果,但无法突出显示原始字段值,如以下链接中所述

突出显示原始字段

需要知道我们是否做错了什么或是否有错误

请注意,我们必须使用自定义“_all”字段,因为它对我们的要求很重要。此外,不能更改字段的数据类型。

非常感谢

4

1 回答 1

0

我已经测试了您的查询,在我看来,它突出显示了原始字段,在这种情况下,mobile_number 周围有标签字段。

这是我得到的结果:

    {
  "took" : 93,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "my_so_index",
        "_type" : "mytype",
        "_id" : "1",
        "_score" : 0.2876821,
        "_source" : {
          "first_name" : "John",
          "mobile_number" : 9988776655
        },
        "highlight" : {
          "mobile_number" : [
            "<tag1>9988776655</tag1>"
          ]
        }
      }
    ]
  }
}

我在 ElasticSearch 6.6 版上运行上述查询。对于版本 5,文档显示的结构略有不同,您可以试试这个:

GET myindex/_search
{
  "query": {
    "multi_match": {
      "query": "9988776655",
      "fields": [
        "contact_details"
      ],
      "fuzziness": "auto"
    }
  },
  "highlight": {
    "pre_tags": [
      "<tag1>"
    ],
    "post_tags": [
      "</tag1>"
    ],
    "fields": {
      "first_name": {"require_field_match": false},
      "mobile_number": {"require_field_match": false}
    }
  }
}
于 2019-03-04T12:45:34.383 回答