我想在elasticsearch节点的所有文档中搜索一些(大约50个字符串),数组中的字符串包含空格和特殊字符。我在弹性搜索中存储的所有文档中都有文本,如下所示:
{"mid": 579820586177,
"text": "If you read and listen to",
}
{"mid": 579820586178,
"text": "two articles every day, your reading and",
}
{"mid": 579820586179,
"text": "You can learn quickly and after some time you will not have",
}
像
这样的字符串数组["listen to","two articles","some time"]
我使用弹性查询,如下所示,但我回复的反应太慢
"query_string": {
"query": "text:\"\%listen to\%\" OR text:\"\%two articles\%\" OR text:\"\%some time\%\"",
"analyze_wildcard": true
}
10M文档的有效查询是什么,大约50个字。
答案 0 :(得分:0)
除非我遗漏了一些明显的东西,否则你可以使用这样的通配符查询 -
{
"query": {
"bool": {
"should": [{
"wildcard": {
"text": {
"value": "listen to"
}
}
},
{
"wildcard": {
"text": {
"value": "two articles"
}
}
}
],
"minimum_should_match":1
}
}
}
答案 1 :(得分:0)
不确定我是否理解你是正确的,但是注意到你把通配符放在哪里,这就是构建短语查询的地方。如果您在文本中查找应按该顺序在文本中的两个单词,则短语查询将在何处进行。下面是如何使用的示例和链接以获取更多信息。
{
"query": {
"bool": {
"should": [
{
"phrase": {
"text": "listen to"
}
},
{
"phrase": {
"text": "two articles"
}
}
]
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html