gpt4 book ai didi

elasticsearch - 在 elasticsearch 上查找具有空字符串值的文档

转载 作者:行者123 更新时间:2023-11-29 02:43:23 26 4
gpt4 key购买 nike

我一直在尝试使用 elasticsearch 仅过滤那些在其正文中包含空字符串的文档。到目前为止,我没有运气。

在我继续之前,我应该提到我已经尝试过 Interwebz 和 StackOverflow 上散布的许多“解决方案”。

因此,下面是我尝试运行的查询,后面是对应的查询:

{
"query": {
"filtered":{
"filter": {
"bool": {
"must_not": [
{
"missing":{
"field":"_textContent"
}
}
]
}
}
}
}
}

我还尝试了以下方法:

 {
"query": {
"filtered":{
"filter": {
"bool": {
"must_not": [
{
"missing":{
"field":"_textContent",
"existence":true,
"null_value":true
}
}
]
}
}
}
}
}

以及以下内容:

   {
"query": {
"filtered":{
"filter": {
"missing": {"field": "_textContent"}
}
}
}
}

以上均无效。当我确定存在包含空字符串字段的记录时,我得到一个空结果集。

如果有人能为我提供任何帮助,我将不胜感激。

谢谢!

最佳答案

如果您使用的是默认分析器(standard),如果它是一个空字符串,则没有任何东西可以分析。所以你需要逐字索引字段(未分析)。这是一个例子:

添加一个映射来索引未标记的字段,如果您还需要索引字段的标记化副本,您可以使用 Multi Field类型。

PUT http://localhost:9200/test/_mapping/demo
{
"demo": {
"properties": {
"_content": {
"type": "string",
"index": "not_analyzed"
}
}
}
}

接下来,索引几个文档。

/POST http://localhost:9200/test/demo/1/
{
"_content": ""
}

/POST http://localhost:9200/test/demo/2
{
"_content": "some content"
}

执行搜索:

POST http://localhost:9200/test/demo/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"_content": ""
}
}
}
}
}

返回空字符串的文档。

{
took: 2,
timed_out: false,
_shards: {
total: 5,
successful: 5,
failed: 0
},
hits: {
total: 1,
max_score: 0.30685282,
hits: [
{
_index: test,
_type: demo,
_id: 1,
_score: 0.30685282,
_source: {
_content: ""
}
}
]
}
}

关于elasticsearch - 在 elasticsearch 上查找具有空字符串值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25561981/

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