我是Elasticsearch的新手。我们需要索引和检索具有不同数据类型的某些数据。我们正在使用自定义“ _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”字段,因为这对我们的要求很重要。另外,字段的数据类型不能更改。
非常感谢
答案 0 :(得分: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}
}
}
}