我使用以下映射创建了索引:
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
public void run() {
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
int min = cal.get(Calendar.MINUTE);
if (hour == 18 && min == 20) {
doSomething();
}
}
};
timer.schedule(tt, 1000, 5000);
}
我在其中添加了以下两个文档:
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": {
"*": {}
}
}
}
以上响应突出显示名称和区域设置部分。我不想突出显示名称和区域设置我只想突出显示我正在搜索的文本(这里是我的文字)。
如何从突出显示中删除名称和区域设置并突出显示实际的字词(此处为“my”)
请帮帮我这个?
答案 0 :(得分:0)
您的查询存在以下问题 - 简单查询字符串具有特殊语法。在您的情况下,如果它是my
,则表示implicitly它是should
条款,这意味着匹配不需要它。这就是为什么你没有突出显示这个my
值。您需要更改查询或在+
之前设置my
才能进行此匹配 - 需要。
关于查询的其他部分,您不希望在突出显示中看到,您可以指定要突出显示的字段,而不是
中的*
"fields": {
"*": {}
}
你可以拥有你想要的字段 - 在你的情况下,我认为它是title, url, fulltext
。请查看documentation以查看
答案 1 :(得分:0)
只要强调不突出显示所有内容&#34; *&#34;在田野里。
另外,如果您只需要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": {}
}
}
}