gpt4 book ai didi

elasticsearch - query_string以获取Elasticsearch中的确切术语

转载 作者:行者123 更新时间:2023-12-03 00:56:59 25 4
gpt4 key购买 nike

我正在尝试实现一个搜索,该搜索仅返回存储在列表中的术语的完全匹配项。所以

karl : ['health care', dental care]

我使用关键字analyser来存储它,因为我只对完全匹配感兴趣
doc = {
"settings" : {
"number_of_shards" : 1,
"number_of_replicas": 0,
},
"mappings" : {
"users" : {
"properties" : {
"plan_list" : {
"type" : "text",
"fields" : {
"raw" : {
"type" : 'keyword'
}
}
}
}
}
}
}

现在,我想创建搜索查询,例如
health care AND dental care

我在文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html中找到了query_string方法
,这正是我所需要的,只是我不希望查询字符串不被分析。如果我这样实现
doc = { 
"query": {
"bool" : {
"must" : [{
"query_string": {
"query": health care AND dental care,
"fields": ["plan_list.raw"]
}
}]
}
}
}

它确实
(plan_list.raw:health OR plan_list.raw:care) AND (plan_list.raw:dental OR plan_list.raw:care)

这不是我想要的。我不希望它把医疗保健分成两个词。我想要
(plan_list.raw:(health care)) AND (plan_list.raw:(dental care))

我知道query_string提供了default_operator,但是将其放在“和”并不能解决问题,因为该词尚未被分析,因此不会存储为两个词。

我知道对于上面的示例,我只能使用术语搜索创建bool / should或bool / must查询,但是我的实际情况更为复杂,我想保留直接在字符串中使用AND / OR的可能性。
有任何想法吗?

最佳答案

您必须将精确的短语放在双引号中,例如\"health care\" AND \"dental care\"。在以下查询中抢劫:

GET {index_name}/_search
{
"query": {
"query_string": {
"default_field": "plan_list.raw",
"query": "\"health care\" OR \"dental care\""
}
}
}

您关心的是有关官方文档的 this部分的内容:

where the author field contains the exact phrase "john smith"

author:"John Smith"

关于elasticsearch - query_string以获取Elasticsearch中的确切术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com