elasticsearch 弹性搜索高光,带复制到,elasticsearch,elasticsearch" /> elasticsearch 弹性搜索高光,带复制到,elasticsearch,elasticsearch" />

elasticsearch 弹性搜索高光,带复制到

elasticsearch 弹性搜索高光,带复制到,elasticsearch,elasticsearch,我已使用以下映射创建索引: PUT test { "mappings": { "documents": { "properties": { "name": { "type": "keyword" }, "fields": { "type": "nested",

我已使用以下映射创建索引:

PUT test
 {
    "mappings": {
        "documents": {
            "properties": {
                "name": {
                    "type": "keyword"
                },

                "fields": {
                    "type": "nested",
                    "properties": {
                        "uid": {
                            "type": "keyword"
                        },
                        "value": {
                            "type": "text",
                            "copy_to": "fulltext"
                        }
                    }
                },
                "fulltext": {
                    "type": "text"
                },
                "locale": {
                    "type": "keyword"
                },
                "title": {
                    "type": "text",
                    "fields": {
                        "raw": {
                            "type": "keyword"
                        }
                    }
                },
                "url": {
                    "type": "text",
                    "fields": {
                        "raw": {
                            "type": "keyword"
                        }
                    }
                }
            }
        }
    }
 }
我在其中添加了以下两个文件:

POST test/documents/10
{
  "title":"java",
  "url":"/java",
  "name":"two",
  "locale":"en-us",
  "fields":[{
    "uid":"group.name",
    "value":"my demo"
  },{
    "uid":"group.last",
    "value":"test"
  }]
}

POST test/documents/11
{
  "title":"php",
  "url":"/php",
  "name":"one",
  "locale":"en-us",
  "fields":[{
    "uid":"group.name",
    "value":"demo"
  },{
    "uid":"group.last",
    "value":"test"
  }]
}
并使用以下查询搜索结果:

GET test/_search
{
    "size": 10,
    "query": {
        "bool": {
            "must": [{
                "simple_query_string": {
                    "query": "my",
                    "fields": ["title^6", "url^4", "fulltext"]
                }
            }, {
                "terms": {
                    "locale": ["en-us"]
                }
            }, {
                "terms": {
                    "name": ["one","two"]
                }
            }]
        }
    },
    "highlight": {
        "pre_tags": ["<b>"],
        "post_tags": ["</b>"],
        "fields": {
            "*": {}
        }
    }
}
获取测试/\u搜索
{
“尺寸”:10,
“查询”:{
“布尔”:{
“必须”:[{
“简单查询字符串”:{
“查询”:“我的”,
“字段”:[“标题^6”、“url ^4”、“全文”]
}
}, {
“条款”:{
“区域设置”:[“en-us”]
}
}, {
“条款”:{
“名称”:[“一”、“二”]
}
}]
}
},
“亮点”:{
“pre_标记”:[“”],
“post_标记”:[“”],
“字段”:{
"*": {}
}
}
}
并得到如下结果:

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 2.287682,
    "hits": [
      {
        "_index": "test",
        "_type": "documents",
        "_id": "10",
        "_score": 2.287682,
        "_source": {
          "title": "java",
          "url": "/java",
          "name": "two",
          "locale": "en-us",
          "fields": [
            {
              "uid": "group.name",
              "value": "my demo"
            },
            {
              "uid": "group.last",
              "value": "test"
            }
          ]
        },
        "highlight": {
          "name": [
            "<b>two</b>"
          ],
          "locale": [
            "<b>en-us</b>"
          ]
        }
      }
    ]
  }
}
{
“take”:7,
“超时”:false,
“_碎片”:{
“总数”:5,
“成功”:5,
“跳过”:0,
“失败”:0
},
“点击次数”:{
“总数”:1,
“最高分数”:2.287682,
“点击次数”:[
{
“_索引”:“测试”,
“_类型”:“文档”,
“_id”:“10”,
“_分数”:2.287682,
“_来源”:{
“标题”:“java”,
“url”:“/java”,
“姓名”:“两个”,
“区域设置”:“en us”,
“字段”:[
{
“uid”:“group.name”,
“值”:“我的演示”
},
{
“uid”:“group.last”,
“值”:“测试”
}
]
},
“亮点”:{
“姓名”:[
“两个”
],
“区域设置”:[
“恩我们”
]
}
}
]
}
}
上面突出显示名称和区域设置部分的响应。我不想突出显示名称和区域设置,我只想突出显示我正在搜索的文本(这里是我的单词)

如何从突出显示中删除名称和区域设置并突出显示实际单词(这里是“我的”)


请帮我解释一下?

查询的问题如下-简单查询字符串具有特殊语法。在您的例子中,当它是
my
时,意味着它是
should
子句,这意味着匹配不需要它。这就是为什么此
my
值没有突出显示的原因。您需要更改查询或在
my
之前放置
+
,以使此匹配成为必需的

对于查询中不希望在突出显示中看到的其他部分,可以指定要突出显示的字段,而不是

"fields": {
            "*": {}
}

你可以有你想要的字段——在你的例子中,我假设它是
标题、url、全文。查看查看它

只需说highlight,不要在字段内用“*”突出显示所有内容

此外,如果你只需要1/0作为搜索中的分数,我建议在过滤器中添加你的术语搜索

GET test/_search
{
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "simple_query_string": {
            "query": "my",
            "fields": [
              "title^6",
              "url^4",
              "fulltext"
            ]
          }
        }
      ],
      "filter": [
        {
          "terms": {
            "locale": [
              "en-us"
            ]
          }
        },
        {
          "terms": {
            "name": [
              "one",
              "two"
            ]
          }
        }
      ]
    }
  },
  "highlight": {
    "pre_tags": [
      "<b>"
    ],
    "post_tags": [
      "</b>"
    ],
    "fields": {
      "name": {},
      "title":{},
      "url": {},
      "fulltext": {}
    }
  }
}
获取测试/\u搜索
{
“尺寸”:10,
“查询”:{
“布尔”:{
“必须”:[
{
“简单查询字符串”:{
“查询”:“我的”,
“字段”:[
“标题^6”,
“url^4”,
“全文”
]
}
}
],
“过滤器”:[
{
“条款”:{
“区域设置”:[
“恩我们”
]
}
},
{
“条款”:{
“姓名”:[
“一个”,
“两个”
]
}
}
]
}
},
“亮点”:{
“pre_标签”:[
""
],
“post_标签”:[
""
],
“字段”:{
“名称”:{},
“标题”:{},
“url”:{},
“全文”:{}
}
}
}

但您可以按区域设置和名称进行搜索,这就是为什么它们也会突出显示的原因。有没有办法将其从搜索中删除并突出显示确切的单词?此处还突出显示未显示搜索文本(此处我正在搜索单词“我的”)