我目前正在尝试filter
通过 library 在现有的 ElasticSearch 实例中使用 a elasticutils
。不幸的是,我无处可去。我不确定问题是因为我做了一些基本的错误,还是图书馆有问题(很可能是 AFAICT)。
我有一个带有特定映射的索引,包含一个字符串类型的字段(比如“A”)(没有给出明确的分析器)。该字段始终包含字符串列表。
我想通过在该字段 A 中包含给定字符串来过滤我的文档,所以我尝试了:
import elasticutils as eu
es = eu.S().es(urls=[ URL ]).indexes(INDEX).doctypes(DOCTYPE)
f = eu.F(A="text")
result = es.filter(f)
但这会返回一个空的结果集。我也尝试过使用它,f = eu.F(A__in="text")
但这导致了一个很大的错误消息,其中最有趣的部分是[terms] filter does not support [A]
.
我想知道是否必须以不同的方式配置索引,也许我必须创建一个构面才能使用过滤器?但是我在阅读的文档中没有找到任何提示。
我想使用的原因filter
是它们可以使用and
,or
和自由组合not
。我还发现了一些描述query
也可以是布尔值的规范,但它们通常指的是must
, should
,并且must_not
我认为这对我来说不够灵活。但我还发现一些规范提到了s 的operator
标志query
,可以设置为and
or or
。欢迎提供任何相关信息。
所以,我现在的问题是:
- 是配置问题吗?方面与此有关吗?
- 我想通过跳过lib来测试这是否是一个库错误,那么我怎样才能使用curl来执行这个过滤操作呢?或任何其他图书馆(也许
pyes
)? - 多个查询的灵活组合(使用
and
、or
、not
和它们的分组)是否可能(即根本不使用过滤器)?我该怎么做?(最好在elasticutils
但其他库语法中,例如pyes
,或简单的 CURL 也是受欢迎的)。