elasticsearch,prefix,Json,Lucene,elasticsearch,Prefix" /> elasticsearch,prefix,Json,Lucene,elasticsearch,Prefix" />

Json ElasticSearch和auto From中前缀的多个字段以及大小限制

Json ElasticSearch和auto From中前缀的多个字段以及大小限制,json,lucene,elasticsearch,prefix,Json,Lucene,elasticsearch,Prefix,我有两个关于ElasticSearch的问题 1) 第一个问题,我有一个带前缀的查询 "must": [ { "prefix": { "user": "John" } } ] 通过此查询,我可以在用户字段中添加前缀John,这样就可以在用户字段中找到John所在的文档。现在,我如何进行此查询,以查看John是否在任何用户或电子邮件字段中作为前缀 2) 第二个问题,我知道我们可以在

我有两个关于ElasticSearch的问题

1) 第一个问题,我有一个带前缀的查询

"must": [
        {
           "prefix": {
              "user": "John"
           }
        }
     ]
通过此查询,我可以在用户字段中添加前缀John,这样就可以在用户字段中找到John所在的文档。现在,我如何进行此查询,以查看John是否在任何用户或电子邮件字段中作为前缀



2) 第二个问题,我知道我们可以在ElasticSearch中应用大小和起始值来限制结果,但我想知道的是,我是否必须明确提供大小和起始值,每次在ElasticSearch中查询以继续上一个结果,或者是否有其他方法让ElasticSearch为我执行此操作,我只是查询,它将在上一个结果的基础上给出一系列结果。

首先,请注意,
前缀
-查询不进行任何文本分析,因此您不会将例如
john
与您的查询进行匹配

您应该研究-query,它也包含-query的选项。因此,您可以将
multi\u match
phrase\u prefix
结合起来,并充分利用两者:多字段匹配和文本分析

下面是一个可以运行的示例:


关于第二个问题,请查看API。

greatjob@alexbrasetvik。谢谢你,伙计。它就像魅力一样。但滚动文件中的陈述让我感到困惑“滚动并非用于实时用户请求,而是用于诸如滚动elasticsearch中存在的大部分数据以重新编制索引之类的情况,例如:这意味着什么。我认为我的用户将从不同的机器上进行数千次搜索。那么我该如何实施呢?我可能误解了你的第二个问题。您可能应该坚持使用
size
from
。它很简单,而且可能非常快。您必须将用户所在的页面从-parameter转换为相应的
。好的,Alex,我知道了。非常感谢你的帮助。
#!/bin/bash

export ELASTICSEARCH_ENDPOINT="http://localhost:9200"

# Index documents
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
{"index":{"_index":"play","_type":"type"}}
{"user":"John Smith","email":"john.smith@gmail.com"}
{"index":{"_index":"play","_type":"type"}}
{"user":"Alice Smith","email":"john.smith@gmail.com"}
'

# Do searches

curl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '
{
    "query": {
        "multi_match": {
            "fields": [
                "user",
                "email"
            ],
            "query": "john",
            "operator": "and",
            "type": "phrase_prefix"
        }
    }
}
'