以下是elasticsearch中的示例数据
PUT /data/test/1
{
"id": "Accounting 101",
"room": "E3",
"professor": {
"name": "Thomas Baszo",
"email": "baszot@onuni.com"
},
"students_enrolled": 27,
"course_description": " financial statements"
}
PUT /data/test/2
{
"name": "Accounting 101",
"room": "E3",
"professor": {
"name": "Sachin Baszo",
"email": "baszot@onuni.com"
},
"students_enrolled": 27,
"course_description": "Thomas Thomas Thomas Thomas "
}
下面是查询
GET /_search
{
"query": {
"query_string": {
"query": "(*Thomas*)"
}
}
}
我的输出将显示第二个文档作为第一个,因为它在描述中包含4次“thomas”
我需要给你更多的重量 professor.name
它应该先显示check,如果没有,然后选择professor.email,然后选择其他属性
python es.search(index="data", body={"query": {"query_string": {"query": "(*Thomas*)"}}})
1条答案
按热度按时间r1wp621o1#
不建议使用
query_string
,如es官方文件所述:因为对于任何无效的语法,它都会返回一个错误,所以我们不建议对搜索框使用query\u string查询。
如果不需要支持查询语法,请考虑使用匹配查询。如果您需要查询语法的特性,请使用简单的\u查询\u字符串查询,它不太严格。
你可以在哪里使用boost
单个字段可以自动增强 — 在相关性得分中计算更多 — 在查询时
添加索引Map、搜索查询和搜索结果的工作示例
索引Map:
搜索查询:
搜索结果:
更新1:
搜索用于搜索的查询
Thomas
或者Sachin
```{
"query": {
"multi_match" : {
"query": "(Thomas) OR (Sachin)",
"fields": [ "course_description", "professor.name" ]
}
}
}