我在文档中有一个名为ip的数组字段,它包含超过10000个ip作为元素。
例如。
IP:["192.168.a:A","192.168.a:B","192.168.a:C","192.168.A:b"...........]
现在,我做了一个搜索查询与一些过滤器,我得到了结果,但问题是结果的大小非常大,因为上述领域。
现在我只想从数组中获取n个ip,假设只有10个顺序无关紧要。
那我该怎么做。。。
更新:
除了ip字段还有其他字段,我对该字段应用了筛选器而不是ip。我想要满足筛选器的整个文档。我只想限制单个ip字段中的元素数。(如果除了使用脚本还有其他方法,请告诉我)。
3条答案
按热度按时间o0lyfsai1#
可以使用scriptedfields从ElasticSearch中的现有字段生成新字段。作为注解添加的详细信息。
注:
如果删除\u源,则只有脚本字段将是结果的一部分。
除了访问字段的值之外,其余的语法是java。随你的便变。
除了未分析的文本字段外,使用doc['fieldname']访问脚本中的字段。速度更快。见以下e.s文件摘录:
到目前为止,从脚本访问字段值的最快最有效的方法是使用doc['field\u name']语法,它从doc值中检索字段值。文档值是一个列式字段值存储,默认情况下对除分析文本字段以外的所有字段启用
qzwqbdag2#
这种请求可以解决您的问题:
z18hc3ub3#
默认情况下es只返回10个匹配结果,所以我不确定您的搜索查询是什么,以及您到底想要限制什么
单个ip字段中的元素数
与搜索结果匹配的ip字段数
请澄清以上内容,并提供您的搜索查询,以进一步帮助。