我正在使用query_string
从Elastic中搜索记录,
查询示例:
GET /stories_qa/_search
{
"query": {
"query_string": {
"query": "Johnson && Johnson"
}
}
}
此查询为我提供了相关记录,但是精确匹配记录不在最前面,我想出了如何根据特定字段来增强记录的方法,但是在我的情况下,我不想提供字段并进行搜索限制性的,ElasticSearch中是否有实现相同目的的选项。
答案 0 :(得分:0)
您可能可以执行以下操作,但是在将其投入生产之前,请进行彻底的测试并测试多个场景。
POST <your_index_name>/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"query_string": {
"query": "\"Karnataka Delhi\"",
"default_operator": "AND"
}
}
]
}
},
{
"query_string": {
"query": "Karnataka Delhi",
"default_operator": "OR",
"boost": 2
}
},
{
"query_string": {
"query": "Karnataka Delhi",
"default_operator": "AND",
"boost": 4
}
}
]
}
}
}
希望这会有所帮助!
答案 1 :(得分:0)
这对示例很有帮助,但是您可以通过添加双引号来使用phrase_match
query。如果您对phrase_match
查询进行了增强,则能够获得排名更高的完全匹配。
以下查询应执行您想要的操作。
GET /stories_qa/_search
{
"query": {
"query_string": {
"query": "(\"Johnson && Johnson\")^2 OR (Johnson && Johnson)"
}
}
}